| 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 VersionTest < Test::Unit::TestCase |
| |
| fixtures :users #, :checkouts, :versions |
| |
| def setup |
| @onno = User.find(1) |
| @onno_cadmin = User.find(5) |
| @user4 = User.find(4) |
| @user3 = User.find(3) |
| end |
| |
| # Shows: |
| # 1. we cannot use find_current_version on a baseline process (we cannot create versions) |
| # 2. find_current_version does not create the baseversion |
| # 3. or find_current_version does create the baseversion |
| # 4. shows that the baseversion was prepared correctly using Page.prepare_html_for_editing |
| def test01_find_current_version |
| version_count = Version.count |
| openupwiki = Site.find_by_title('OpenUP Wiki') |
| openup0825 = Site.find_by_folder(openup0825_folder) |
| assert_not_nil openupwiki |
| page = Page.find_by_filename('determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html') |
| assert File.exists?(page.path(openupwiki)) |
| html_before = IO.readlines(page.path(openupwiki)) |
| assert_not_nil page |
| # 1 |
| assert_raise(RuntimeError) {Version.find_current_version(openup0825, page)} |
| # 2 |
| version = Version.find_current_version(openupwiki, page) |
| assert version.nil? |
| assert_equal version_count, Version.count # default not created |
| # 3 |
| version = Version.find_current_version(openupwiki, page, true) |
| assert_not_nil version |
| assert version.save |
| version.reload |
| assert version_count + 1, Version.count |
| assert_equal 0, version.version |
| if ENV['EPFWIKI_TESTDATA'] == 'test' |
| #assert_equal "determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html_EPFWIKI_v0_OUP_20060728.html", version.filename |
| assert_equal 'determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html_EPFWIKI_v0_OUP_20060728.html', version.rel_path |
| else |
| #assert_equal "determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html_EPFWIKI_v0_OUP_20060728.html", version.filename |
| assert_equal 'openup_basic/capabilitypatterns/determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html_EPFWIKI_v0_OUP_20060728.html', version.rel_path |
| end |
| |
| assert_equal 'OUP_20060728', version.baseline.baseline |
| assert File.exists?(version.path) |
| # 4 |
| assert File.compare("#{ENV['EPFWIKI_ROOT_DIR']}test/unit/version_test/determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html_EPFWIKI_v0_OUP_20060728.html", version.path) |
| end |
| |
| # Shows: |
| # |
| # When there is only the baseversion |
| # 1. Version.find_current_version creates a baseversion as there are no versions yet! This version is not saved yet! |
| # 2. a baseversion does not have a previous_version |
| # 3. this created baseversion is the current version |
| # 4. when creating version1 using Version.new_basedonversion, the baseversion is the first (0) version |
| # 5. we can create version2 based on version1 |
| # Creating version2 based on version1 |
| # 6. before changes version2 is equal to version1 |
| # 7. we can rollback changes by creaint version3 based on version1 |
| # 8. create a version using a version from another site, this will overwrite changes |
| def test02_version_types |
| openupwiki = Site.find_by_title('OpenUP Wiki') |
| openup0825 = Site.find_by_folder(openup0825_folder) |
| assert_not_nil openupwiki |
| page = Page.find_by_filename('implementation,_0TeDoMlgEdmt3adZL5Dmdw.html') |
| assert File.exists?(page.path(openupwiki)) |
| baseversion = Version.find_current_version(openupwiki, page, true) |
| assert_equal 0, baseversion.version #baseversion, not saved yet! |
| assert baseversion.save |
| # 1 |
| assert_equal baseversion, baseversion.baseversion |
| assert_equal 0, baseversion.version |
| # 2 |
| assert_equal nil, baseversion.previous_version |
| # 3 |
| assert_equal baseversion, baseversion.current_version |
| # creating a new version |
| version1 = Version.new_basedonversion(openupwiki, page, baseversion, @user4) |
| assert version1.save |
| version1.reload |
| version1.html('version1') |
| # 4 |
| assert_equal baseversion, version1.baseversion |
| assert_equal 0, version1.baseversion.version |
| # 5 |
| assert_equal 1, version1.version |
| # creating version2 based on version1 |
| version2 = Version.new_basedonversion(openupwiki, page, version1, @user4) |
| assert version2.save |
| # 6 |
| assert_equal version1.html, version2.html |
| version2.html('version2') |
| assert_equal 2, version2.version |
| # 7 |
| version3 = Version.new_basedonversion(openupwiki, page, version1, @user4) |
| assert version3.save |
| assert_equal version3.html, version1.html |
| end |
| |
| # Shows: |
| # 1. cannot checkout to baseline process, only to a Wiki |
| # 2. checkout to openupwiki2 creates version1, a baseversion is not created as the page doesn't exist openupwiki2 |
| # 3. checkout to openupwiki2 creates version1 and a new baseversion |
| def test03_checkout_to_other_wiki |
| openupwiki = Site.find_by_title('OpenUP Wiki') |
| openupwiki2 = Site.new_wiki(:folder => 'openup2', :title => 'OpenUP Wiki2', :user_id => User.find_central_admin.id, :site_id_baseline_process => baseline_process = Site.find_by_folder_and_site_type(openup0721_folder,'S')) |
| assert openupwiki2.save |
| openup0825 = Site.find_by_folder(openup0825_folder) |
| # 1 |
| page = Page.find_by_filename('implementation,_0TeDoMlgEdmt3adZL5Dmdw.html') |
| version_source = Version.find_current_version(openupwiki, page, true) |
| assert_equal 3, version_source.version |
| version_source.html('version3 from openupwiki') |
| assert_raise(RuntimeError) {version1 = Version.new_basedonversion(openup0825, page, version_source, @user4)} |
| # 2 |
| baseversion = Version.find_current_version(openupwiki2, page) # we don't create the baseversion here |
| assert !File.exists?(page.path(openupwiki2)) # page does not exist in openupwiki2 |
| assert_equal nil, baseversion |
| version1 = Version.new_basedonversion(openupwiki2, page, version_source, @user4) |
| assert version1.save |
| version1.reload |
| assert_equal 1, version1.version |
| assert_equal version_source.html, version1.html |
| assert version1.baseversion.nil? |
| #assert baseversion.html != version1.html |
| assert_equal version_source, version1.source_version |
| # 3 |
| #page = Page.find_by_filename('') |
| end |
| |
| def test04_rel_path_root |
| openupwiki = Site.find_by_title('OpenUP Wiki') |
| page = Page.find_by_filename('implementation,_0TeDoMlgEdmt3adZL5Dmdw.html') |
| assert_not_nil openupwiki |
| assert_not_nil page |
| version = Version.find_current_version(openupwiki, page) |
| assert_equal 3, version.version |
| if !ENV['EPFWIKI_TESTDATA'].blank? |
| assert_equal "#{ENV['EPFWIKI_WIKIS_FOLDER']}/openup/implementation,_0TeDoMlgEdmt3adZL5Dmdw.html_EPFWIKI_v3_OUP_20060728.html", version.rel_path_root |
| end |
| end |
| |
| def test05_template_test |
| openupwiki = Site.find_by_title('OpenUP Wiki') |
| assert_not_nil openupwiki |
| ['Tool Mentor Template.html','Checklist Template.html'].each do |filename| |
| page = Page.find_by_filename(filename) |
| assert_not_nil page |
| page.versions.each do |version| |
| assert version.template? |
| end |
| end |
| end |
| end |