blob: 5ac6354cdb3fa8fbe4b5672dbfc3731fcd0eedc9 [file] [log] [blame]
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