| require File.dirname(__FILE__) + '/../test_helper' |
| |
| #--###################################################################### |
| # Copyright (c) 2006 LogicaCMG |
| # |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| # |
| # Contributors: |
| # |
| # Onno van der Straaten:: initial implementation |
| #++###################################################################### |
| # {Copyright (c) 2006 LogicaCMG}[link:files/COPYRIGHT.html] |
| |
| class SiteTest < Test::Unit::TestCase |
| # fixtures :sites |
| |
| def setup |
| #@site = Site.find(1) |
| #Site.destroy_all |
| #Baseline.destroy_all |
| end |
| |
| # Shows: |
| # 1. we can unzip uploaded content |
| # 2. we cannot unzip same content twice |
| def test01_unzip_upload |
| site = Site.new_baseline_process(:folder => openup0721_folder) |
| # 1. |
| # assert_equal "#{ENV['EPFWIKI_ROOT_DIR']}script/other/unzip_upload.bat U: U:\\ROR\\epfwiki2\\ C:/apache-ant-1.6.2/bin/ant #{ENV['EPFWIKI_ROOT_DIR']}public/rupsites/OpenUP-Basic_published_20060721.zip #{ENV['EPFWIKI_ROOT_DIR']}public/rupsites/OpenUP-Basic_published_20060721", site.unzip_upload_cmdline |
| site.unzip_upload |
| assert File.exists?(site.path) |
| assert File.exists?(site.path2zip) |
| # 2 |
| assert_raise(RuntimeError){site.unzip_upload} |
| site = Site.new_baseline_process(:folder => openup0728_folder) |
| site.unzip_upload |
| assert File.exists?(site.path) |
| assert File.exists?(site.path2zip) |
| assert_raise(RuntimeError){site.unzip_upload} |
| end |
| |
| # Shows: |
| # 1. to create a new site we have to specifiy: title, folder, baseline, user |
| # 2. we cannot create a site from non-existing folder |
| # 3. we cannot create site a without specifying the baseline |
| # 4. we can create a site and this also defines a baseline, so a Baseline record is also created |
| # 5. we cannot create a site if the baseline already exists, was already defined (baseline.baseline needs to be unique) |
| # 6. we cannot use a folder twice (create two or more sites from the same folder) |
| def test02_new_baseline_process |
| cadmin = create_cadmin |
| cadmin.save |
| cadmin = User.find_central_admin |
| assert_not_nil cadmin |
| assert !User.find_central_admin.nil? |
| # 1. |
| site = Site.new_baseline_process() |
| assert !site.save |
| assert_equal "Title can't be blank, Folder should consist of letters, digits and underscores, Folder can't be blank, Baseline can't be blank, User can't be blank", site.errors.full_messages.join(", ") |
| assert !User.find_central_admin.nil? |
| # 2. |
| baseline_count = Baseline.count |
| site_count = Site.count |
| site = Site.new_baseline_process(:folder => 'nonexistingfolder', :title => 'test02_new_site', :user_id => cadmin.id, :baseline_baseline => 'OUP_20060721') |
| assert !site.save |
| assert_equal 'Folder doesn\'t exist, Baseline can\'t be blank', site.errors.full_messages.join(', ') |
| assert_equal baseline_count, Baseline.count |
| assert_equal site_count, Site.count |
| assert !User.find_central_admin.nil? |
| # 3. |
| site = Site.new_baseline_process(:folder => openup0721_folder, :title => 'OpenUP 20060721', :user_id => cadmin.id) |
| assert !site.save |
| assert_equal 'Baseline can\'t be blank', site.errors.full_messages.join(', ') |
| assert_equal baseline_count, Baseline.count |
| assert_equal site_count, Site.count |
| assert !User.find_central_admin.nil? |
| # 4. |
| site = Site.new_baseline_process(:folder => openup0721_folder, :title => 'openup0721', :user_id => User.find_central_admin.id, :baseline_baseline => 'OUP_20060721') |
| assert_not_nil site.baseline |
| assert_not_nil site.baselines |
| assert site.save |
| assert_equal '', site.errors.full_messages.join(', ') |
| assert_equal baseline_count + 1, Baseline.count |
| assert_equal site_count + 1, Site.count |
| site = Site.find(site.id) |
| if ENV['EPFWIKI_TESTDATA'] == 'test' |
| assert_equal 8, site.wikifiable_files_count |
| assert_equal 8, site.html_files_count |
| else |
| assert_equal 617, site.wikifiable_files_count |
| assert_equal 633, site.html_files_count |
| end |
| assert !User.find_central_admin.nil? |
| # 5. |
| site = Site.new_baseline_process(:folder => openup0728_folder, :title => 'test02_new_site', :user_id => User.find_central_admin.id, :baseline_baseline => 'OUP_20060721') |
| assert !site.save |
| assert_equal 'Baseline has already been taken', site.errors.full_messages.join(', ') |
| assert_equal baseline_count + 1, Baseline.count |
| assert_equal site_count + 1, Site.count |
| # 6. |
| assert !User.find_central_admin.nil? |
| site = Site.new_baseline_process(:folder => openup0721_folder, :title => 'test02_new_site', :user_id => User.find_central_admin.id, :baseline_baseline => 'OUP_20060728') |
| assert !site.save |
| assert_equal 'Folder was already used to create a baseline process (static site)', site.errors.full_messages.join(', ') |
| assert_equal baseline_count + 1, Baseline.count |
| assert_equal site_count + 1, Site.count |
| assert !User.find_central_admin.nil? |
| end |
| |
| # Shows: |
| # 1. to create a Wiki we need to specifiy a baseline process |
| # 2. we can create a Wiki or better schedule a Wiki te be created |
| # 3. a Wiki can only be created from a baseline process (static site, site_type is 'S') |
| def test03_new_wiki |
| assert !User.find_central_admin.nil? |
| # 1. |
| sites_count = Site.count |
| wiki = Site.new_wiki(:folder => 'openup', :title => 'OpenUP Wiki', :user_id => User.find_central_admin.id) |
| assert !wiki.save |
| assert_equal 'Baseline can\'t be blank', wiki.errors.full_messages.join(', ') |
| assert_equal sites_count, Site.count |
| # 2. |
| baseline_process = Site.find_by_folder_and_site_type(openup0721_folder,'S') |
| assert_not_nil baseline_process |
| wiki = Site.new_wiki(:folder => 'openup', :title => 'OpenUP Wiki', :user_id => User.find_central_admin.id, :site_id_baseline_process => baseline_process.id) |
| assert wiki.save |
| wiki.reload |
| assert_equal wiki.baseline_process.html_files_count, wiki.html_files_count |
| assert_equal wiki.baseline_process.wikifiable_files_count, wiki.wikifiable_files_count |
| assert_equal 'P', wiki.status |
| assert_equal 'W', wiki.site_type |
| # 3. |
| wiki2 = Site.new_wiki(:folder => 'openup2', :title => 'OpenUP Wiki2', :user_id => User.find_central_admin.id, :site_id_baseline_process => wiki.id) |
| assert !wiki2.save |
| assert_equal 'Baseline process not a baseline process (type is not \'S\'', wiki2.errors.full_messages.join(', ') |
| end |
| |
| # Shows: |
| # 1. we cannot wikify a static site |
| # 2. we can wikify content in a Wiki site |
| # 3. the wikify operation will cause content of baseline process to be scanned (because it was not scanned yet) |
| # 4. scan of content has defines the baseline |
| # 5. TODO: test if content was wikified correctly |
| def test04_new_wiki |
| # 1 |
| wiki = Site.find_by_site_type('S') |
| assert_not_nil wiki |
| assert_raise(RuntimeError) {wiki.wikify} |
| # 2 |
| pending_wikis = Site.find_wikis_pending |
| pending_count = pending_wikis.size |
| assert_equal 1, pending_count |
| wiki = pending_wikis[0] |
| assert_not_nil wiki.baseline_process |
| baseline_process = Site.find(wiki.baseline_process.id) # TODO: |
| wiki.wikify |
| assert wiki.save |
| #assert_equal '', wiki.errors.full_messages.join(', ') |
| wiki.reload |
| assert_equal 0, Site.find_all_by_site_type('P').size #pass |
| assert_equal 1, Site.find_all_by_site_type('W').size #pass |
| baseline_process.reload |
| assert_not_nil baseline_process |
| assert_equal 'openup0721',baseline_process.title |
| assert_equal wiki.baseline, baseline_process.baseline |
| assert_equal 617, wiki.pages.size if ENV['EPFWIKI_TESTDATA'] != 'test' |
| assert_equal 8, wiki.pages.size if ENV['EPFWIKI_TESTDATA'] == 'test' |
| # 3 |
| assert_equal wiki.pages.size, baseline_process.pages.size |
| # 4 |
| assert_equal 617, wiki.baseline.pages.size if ENV['EPFWIKI_TESTDATA'] != 'test' |
| assert_equal 8, wiki.pages.size if ENV['EPFWIKI_TESTDATA'] == 'test' |
| end |
| |
| # Shows: |
| # 1. can't update the site_type of a baseline process |
| # 2. can update a baseline process (site_type != 'W') |
| # 3. can't update a wiki with a current baseline process |
| # 4. can update or cancel a pending wiki |
| # 5. can't do the actual update when there is not baseline_process |
| # 6. we can do the actual update |
| def test05_update_wiki |
| # 1 |
| site = Site.new_baseline_process(:folder => openup0728_folder, :title => 'openup0728', :user_id => User.find_central_admin.id, :baseline_baseline => 'OUP_20060728') |
| assert_equal 0, site.pages.size # content not scanned yet |
| assert_not_nil site.baseline |
| assert_not_nil site.baselines |
| assert site.save |
| assert_equal '', site.errors.full_messages.join(', ') |
| openup0721 = Site.find_by_folder(openup0721_folder) |
| openup0728 = Site.find_by_folder(openup0728_folder) |
| openupwiki = Site.find_by_folder('openup') |
| assert_not_nil openup0721 |
| assert_not_nil openup0728 |
| assert_not_nil openupwiki |
| openup0721.site_type = 'W' |
| assert !openup0721.save |
| assert_equal 'Site type can\'t be updated for a baseline process', openup0721.errors.full_messages.join(', ') |
| # 2 |
| openup0721.baseline_process = openup0728 |
| assert !openup0721.save |
| assert_equal 'Site type can\'t be updated for a baseline process', openup0721.errors.full_messages.join(', ') |
| # 3 |
| openupwiki = Site.find_wikis[0] |
| openup0721 = Site.find_all[0] |
| openupwiki.baseline_process = openup0721 |
| assert !openupwiki.save |
| assert_equal 'Baseline process is equal to current baseline, Baseline process was already used to create or update this site', openupwiki.errors.full_messages.join(', ') |
| # 4 |
| openup0825 = create_openup0825 |
| openupwiki.reload |
| assert_equal 'W', openupwiki.status |
| openupwiki.baseline_process = openup0728 |
| assert openupwiki.save |
| openupwiki.reload |
| assert_equal 'U', openupwiki.status |
| openupwiki.baseline_process = openup0825 |
| assert openupwiki.save |
| openupwiki.reload |
| assert_equal openup0825, openupwiki.baseline_process |
| assert_equal 'U', openupwiki.status |
| openupwiki.baseline_process = nil |
| assert openupwiki.save |
| openupwiki.reload |
| assert_equal 'W', openupwiki.status |
| # 5 |
| assert_raise(RuntimeError) {openupwiki.update_wiki} |
| # 6 |
| openupwiki.baseline_process = openup0728 |
| assert_equal 0, openup0728.pages.size # content not scanned yet |
| assert openupwiki.save |
| openupwiki.update_wiki |
| assert openupwiki.save |
| assert_equal 617, openupwiki.pages.size if ENV['EPFWIKI_TESTDATA'] != 'test' |
| assert_equal 10, openupwiki.pages.size if ENV['EPFWIKI_TESTDATA'] == 'test' |
| openup0728.reload |
| if ENV['EPFWIKI_TESTDATA'] == 'test' |
| assert_equal 10, openup0728.pages.size # content scan triggered by update |
| assert_equal 10, openup0728.baseline.pages.size |
| else |
| assert_equal 617, openup0728.pages.size # content scan triggered by update |
| assert_equal 617, openup0728.baseline.pages.size |
| end |
| end |
| |
| def test06_wikifiable_files |
| bp = Site.find_by_title('openup0721') |
| wikifiable_files = bp.files_wikifiable |
| if ENV['EPFWIKI_TESTDATA'] == 'test' |
| assert_equal 8, wikifiable_files.size # content scan triggered by update |
| assert_equal 8, wikifiable_files.size |
| else |
| assert_equal 617, wikifiable_files.size # content scan triggered by update |
| assert_equal 617, wikifiable_files.size |
| end |
| end |
| end |