Class | PageTest
In: | test/unit/page_test.rb
Parent: | Test::Unit::TestCase

Copyright (c) 2006 Logica

### Methods

setup test_copyright_pattern test_make_rel_path_unique test_max_rel_path test_new test_new_page_using_other_page test_new_page_using_template test_patterns test_shim_tag_pattern test_title_from_file tst_overview_table

### Public Instance methods

setup()

[Source]

        # File test/unit/page_test.rb, line 20
    20:   def setup
    21:     logger.debug "Test Case: #{name}"
    22:     @andy = users(:andy)
    23:     @george = users(:george)
    24:     @tony = users(:tony)
    25:     @cash = users(:cash)
    26:     @html = IO.readlines('test/unit/page_test/test_html.txt').join.split("####")
    27:   end

test_copyright_pattern()

[Source]

        # File test/unit/page_test.rb, line 62
    62:   def test_copyright_pattern
    63:     assert_pattern(Page::COPYRIGHT_PATTERN, @html[5],
    64:         "<p>Copyright (c) 1987, 2006 IBM Corp. and others. All Rights Reserved.\n\n                <br />This program and the accompanying materials are made available under the\n\n                <br />\n\n                <a href=\"http://www.eclipse.org/org/documents/epl-v10.php\" target=\"_blank\">Eclipse Public License v1.0</a> which accompanies this distribution.</p>")
    65:     assert_pattern(Page::COPYRIGHT_PATTERN, @html[2],
    66:         "<p>\n    Copyright (c) 1987, 2006 IBM Corp. and others. All Rights Reserved.<br />\n    This program and the accompanying materials are made available under the<br />\n    <a href=\"http://www.eclipse.org/org/documents/epl-v10.php\" target=\"_blank\">Eclipse Public License v1.0</a> which\n    accompanies this distribution.\n</p>")
    67:   end

test_make_rel_path_unique()

[Source]

         # File test/unit/page_test.rb, line 277
    277:   def test_make_rel_path_unique
    278:     @wiki = create_templates
    279:     page = WikiPage.find_by_presentation_name('Toolmentor Template')
    280:     assert_equal 'new/guidances/toolmentors/toolmentor_template_E9930C53.html', page.rel_path
    281:     for i in 1..15
    282:       page.make_rel_path_unique
    283:       assert_equal "new/guidances/toolmentors/toolmentor_template_E9930C53_#{i}.html", page.rel_path
    284:     end
    285:   end

test_max_rel_path()

Shows:

[Source]

         # File test/unit/page_test.rb, line 268
    268:   def test_max_rel_path
    269:     @oup_20060721 = create_oup_20060721
    270:     max_rel_path = 0
    271:     @oup_20060721.pages.each do |page|
    272:       max_rel_path = page.rel_path.length if page.rel_path.length > max_rel_path
    273:     end
    274:     assert_equal 101, max_rel_path
    275:   end

test_new()

[Source]

        # File test/unit/page_test.rb, line 29
    29:   def test_new
    30:     @oup_20060721 = create_oup_20060721
    31:     @oup_wiki = create_oup_wiki(@oup_20060721)
    32:     @oup_20060728 = create_oup_20060728
    33:     treebrowser_tag_count = 0
    34:     copyright_tag_count = 0
    35:     #text_count = 0
    36:     body_tag_count = 0
    37:     assert_equal 1, Wiki.count
    38:     @oup_wiki.pages.each do |page|
    39:       find_page = WikiPage.find_by_rel_path(page.rel_path) # assumes there is only 1 Wiki
    40:       assert_not_nil find_page
    41:       assert_equal page, find_page
    42:       treebrowser_tag_count = treebrowser_tag_count + 1 if  !find_page.treebrowser_tag.nil?
    43:       copyright_tag_count = copyright_tag_count + 1 if !find_page.copyright_tag.nil?
    44:       #text_count = text_count + 1 if !find_page.text.nil?
    45:       body_tag_count = body_tag_count + 1 if !find_page.body_tag.nil?
    46:     end
    47:     assert_equal 617, treebrowser_tag_count
    48:     assert_equal 617, copyright_tag_count
    49:     # assert_equal 617, text_count
    50:     assert_equal 617, body_tag_count
    51:   end

test_new_page_using_other_page()

Shows:

1. we replace ‘UMA Method Architecture’ with ‘Unified Method Architecture (UMA)’ in about base concepts
2. we create a new page based on that changed version and then remove ‘Method‘

[Source]

         # File test/unit/page_test.rb, line 212
    212:   def test_new_page_using_other_page
    213:     @oup_20060721 = create_oup_20060721
    214:     @oup_wiki = create_oup_wiki(@oup_20060721)
    215:     @oup_20060728 = create_oup_20060728
    216:     # 1
    217:     assert_equal 1, WikiPage.find(:all, :conditions => ['presentation_name=?','About Base Concepts']).size
    218:     page = WikiPage.find_by_presentation_name('About Base Concepts')
    219:     assert !page.nil? # Shouldn't fail but does, this really sucks, big time.
    220:     assert_equal [617, 617, 617*3, 617*2], [Version.count, WikiPage.count, Page.count, BaselineProcessPage.count]
    221:     assert_equal 1, page.versions.size
    222:     checkout = Checkout.new(:user => @andy, :page => page, :site => @oup_wiki, :note => 'test13_new_page_using_other_page')
    223:     assert checkout.save
    224:     checkout.reload
    225:     page.reload
    226:     assert_equal 'test13_new_page_using_other_page', checkout.version.note
    227:     assert_equal 1, page.versions.size # versions doesn't count checked out
    228:     assert_equal nil, checkout.version.version
    229:     checkout.checkin(@andy, checkout.version.html.gsub('UMA Method Architecture', 'Unified Method Architecture (UMA)'))
    230:     page.reload
    231:     assert_equal 2, page.versions.size
    232:     version = page.current_version
    233:     assert_equal 1, version.version
    234:     assert version.html.index('Unified Method Architecture (UMA)')
    235:     assert page.html.index('Unified Method Architecture (UMA)')
    236:     assert_enhanced_file(page.path)
    237:     assert_version_file(version.path)
    238:     # 2
    239:     pages_count = @oup_wiki.pages.count
    240:     page, co = WikiPage.new_using_template(:presentation_name => 'New page created using base concepts', :source_version => version, :user => @andy, :site => @oup_wiki)
    241:     assert_not_nil page
    242:     assert_not_nil co
    243:     page.reload
    244:     co.reload
    245:     @oup_wiki.reload
    246:     assert_equal pages_count + 1, @oup_wiki.pages.count
    247:     assert_equal 0, page.versions.size # checkouts are not counted here
    248:     v = co.version
    249:     assert_not_nil v
    250:     assert_not_nil v.version_id
    251:     assert_equal version, v.source_version # the template version
    252:     assert v.previous_version.nil? # the first version of a new page
    253:     checkout = page.checkout
    254:     assert_not_nil checkout
    255:     assert checkout.version.html.index('Unified Method Architecture (UMA)')
    256:     assert_not_nil checkout.version.source_version
    257:     checkout.checkin(@andy, checkout.version.html.gsub('Unified Method Architecture (UMA)','Unified Architecture (UMA)'))
    258:     version = page.current_version
    259:     assert_equal 1, version.version
    260:     assert version.html.index('Unified Architecture (UMA)')
    261:     assert page.html.index('Unified Architecture (UMA)')
    262:     assert_enhanced_file(page.path)
    263:     assert_version_file(version.path)
    264:   end

test_new_page_using_template()

Shows:

1. There should always be a Wiki ‘Templates’. It is create with the first user.
2. Creating a new page creates a page, a version, a checkout
3. A Page file does exist after new page, before checkin
4. A Version file is created and prepared for edit
5. Notification record is created for the page after checkin
6. We can create another new page with the same presentation name

[Source]

         # File test/unit/page_test.rb, line 92
     92:   def test_new_page_using_template
     93:     @oup_20060721 = create_oup_20060721
     94:     @oup_wiki = create_oup_wiki(@oup_20060721)
     95:     #@oup_20060728 = create_oup_20060728
     96:     # 1
     97:     assert_raise(RuntimeError) {Site.templates}
     98:     create_templates # Using templates plugin to create the 'Templates' Wiki
     99:     assert_equal 26, Site.templates.size
    100:     @templates = Wiki.find(:first, :conditions => ['title = ?', 'Templates'])
    101:     # 2
    102:     pc, vc, cc = Page.count, Version.count, Checkout.count
    103:     tool_tpl = WikiPage.find_by_presentation_name('Toolmentor Template')
    104:     assert_not_nil tool_tpl
    105:     assert_equal @templates, tool_tpl.site
    106:     assert_equal [0,0,0], [Page.count - pc, Version.count - vc, Checkout.count - cc]
    107:     assert_equal 1, Version.count(:conditions => ['page_id=? and wiki_id =?', tool_tpl.id, @templates.id])
    108:     source_version = tool_tpl.current_version
    109:     assert_not_nil source_version
    110:     new_page, new_co = WikiPage.new_using_template(:presentation_name => 'New Tool Mentor created in test10_new_page_using_tempalte', :source_version => source_version, :user => @andy, :site => @oup_wiki)
    111:     #5
    112:     assert_no_errors(new_page)
    113:     assert_no_errors(new_co)
    114:     assert_equal [1,1,1], [Page.count - pc, Version.count - vc, Checkout.count - cc]
    115:     assert_equal new_co, new_page.checkout
    116:     new_page.reload
    117:     assert_equal 'New Tool Mentor created in test10_new_page_using_tempalte', new_page.presentation_name
    118:     assert_equal 'new_tool_mentor_created_in_test10_new_page_using_tempalte.html', new_page.filename
    119:     assert_equal "#{ENV['EPFWIKI_ROOT_DIR']}#{ENV['EPFWIKI_PUBLIC_FOLDER']}/#{ENV['EPFWIKI_WIKIS_FOLDER']}/openup/new/guidances/toolmentors/#{new_page.filename}", new_page.path
    120:     # 3
    121:     assert File.exists?(new_page.path)
    122:     # 4
    123:     assert File.exists?(new_co.version.path)
    124:     assert_version_file(new_co.version.path)
    125:     # 5
    126:     new_co.checkin(@andy)
    127:     assert Notification.find_all_users(new_page, Page.name).include?(@andy)
    128:     # 6
    129:     new_page2, new_co2 = WikiPage.new_using_template(:presentation_name => 'New Tool Mentor created in test10_new_page_using_tempalte', :source_version => source_version, :user => @andy, :site => @oup_wiki)
    130:     assert_no_errors(new_page2)
    131:     assert_no_errors(new_co2)
    132:     new_co2.checkin(@andy)
    133:     assert_equal new_page.rel_path.gsub('.html', '_1.html'), new_page2.rel_path
    134:     new_page3, new_co3 = WikiPage.new_using_template(:presentation_name => 'New Tool Mentor created in test10_new_page_using_tempalte', :source_version => source_version, :user => @andy, :site => @oup_wiki)
    135:     assert_no_errors(new_page3)
    136:     assert_no_errors(new_co3)
    137:     new_co3.checkin(@andy)
    138:     assert_equal new_page.rel_path.gsub('.html', '_2.html'), new_page3.rel_path
    139:   end

test_patterns()

Shows: we do get uma_type, uma_presentation_name, uma_name, body_tag, treebrowser_tag and copyright tag from the HTML

[Source]

         # File test/unit/page_test.rb, line 142
    142:   def test_patterns
    143:     @wiki = create_templates
    144:     assert_equal ["CustomCategory",
    145:      "Discipline",
    146:      "Domain",
    147:      "Checklist",
    148:      "Concept",
    149:      "EstimationConsiderations",
    150:      "Example",
    151:      "Guideline",
    152:      "Guideline",
    153:      "Practice",
    154:      "Report",
    155:      "ReusableAsset",
    156:      "Roadmap",
    157:      "SupportingMaterial",
    158:      "Template",
    159:      "TermDefinition",
    160:      "ToolMentor",
    161:      "Whitepaper",
    162:      "Role",
    163:      "RoleSetGrouping",
    164:      "RoleSet",
    165:      "Task",
    166:      "Artifact",
    167:      "Deliverable",
    168:      "Outcome",
    169:      "WorkProductType"].sort, @wiki.pages.collect {|page| page.uma_type}.sort
    170:     assert_equal ["Templates",
    171: "Discipline Template",
    172: "Domain Template",
    173: "Checklist Template",
    174: "Concept Template",
    175: "Estimation Considerations Template",
    176: "Example Template",
    177: "Estimating Guideline Template",
    178: "Guideline Template",
    179: "Practice Template",
    180: "Report Template",
    181: "Reusable Asset Template",
    182: "Roadmap Template",
    183: "Supporting Material Template",
    184: "Template Template",
    185: "Term Definition Template",
    186: "Toolmentor Template",
    187: "Whitepaper Template",
    188: "Role Template",
    189: "Role Set Grouping Template",
    190: "Role Set Template",
    191: "Task Template",
    192: "Artifact Template",
    193: "Deliverable Template",
    194: "Outcome Template",
    195: "Work Product Kind Template"].sort, @wiki.pages.collect {|page| page.presentation_name}.sort
    196:     assert_equal ["view", "discipline_template", "domain_template", "checklist_template",
    197:     "concept_template", "estimation_considerations_template", "example_template",
    198:     "estimating_guideline_templae", "guideline_template", "practice_template", "report_template",
    199:     "reusable_asset_template", "roadmap_template", "supporting_material_template",
    200:     "template_template", "term_definition_template", "toolmentor_template", "whitepaper_template",
    201:     "role_template", "role_set_grouping_template", "role_set_template", "task_template",
    202:     "artifact_template", "deliverable_template", "outcome_template", "work_product_kind_template"].sort, @wiki.pages.collect {|page| page.uma_name}.sort
    203:     assert_equal ["<body>"]*26, @wiki.pages.collect {|page| page.body_tag}
    204:     @wiki.pages.each do |p|
    205:       assert_equal [p.filename, true, true, true, true], [p.filename, p.treebrowser_tag.include?('treebrowser.js'), p.treebrowser_tag.include?('<script'), p.treebrowser_tag.include?('script>'), p.copyright_tag.include?('http://www.eclipse.org/org/documents/epl-v10.php')]
    206:     end
    207:   end

test_shim_tag_pattern()

[Source]

        # File test/unit/page_test.rb, line 53
    53:    def test_shim_tag_pattern
    54:     assert_pattern(Page::SHIM_TAG_PATTERN, @html[4],
    55:         "images/shim.gif\"></td>")
    56:     assert_pattern(Page::SHIM_TAG_PATTERN,@html[2],
    57:         "images/shim.gif\" />\n              </td>")
    58:     assert_pattern(Page::SHIM_TAG_PATTERN, @html[3],
    59:         "images/shim.gif\"></td>")
    60:   end

test_title_from_file()

Shows:

1. can extract title from the file using Page.uma_presentation_name_from_file

[Source]

        # File test/unit/page_test.rb, line 71
    71:   def  test_title_from_file
    72:     @oup_20060721 = create_oup_20060721
    73:     filenames = Array.new
    74:     filenames << ['about_base_concepts,_uvje4D_fEdqDFvujd6NHiA.html','About Base Concepts']
    75:     filenames << ['any_role,_3TCEoeB5EdqnKu908IEluw.html', 'Any Role']
    76:     filenames << ['determine_architectural_feasibility_0oreoclgEdmt3adZL5Dmdw_desc.html', 'Determine Architectural Feasibility']
    77:     for filename in filenames
    78:       page = Page.find_by_filename(filename[0])
    79:       assert_not_nil page
    80:       assert_equal filename[1], Page.uma_presentation_name_from_html(page.html)
    81:     end
    82:     #pages = Page.find(:all)
    83:   end

tst_overview_table()

[Source]

         # File test/unit/page_test.rb, line 287
    287:   def tst_overview_table
    288:     @wiki = create_templates
    289:     page = WikiPage.find_by_presentation_name('Concept Template')
    290:     assert_equal "A concept is a specific type of guidance that outlines key ideas associated with basic principles underlying the referenced item. Concepts normally address more general topics than guidelines and may be applicable to several work products, tasks, and activities.<br/>&#xD;&#xA;", page.overview_table
    291:     WikiPage.find(:all).each do |page|
    292:       if ['Templates'].include? page.presentation_name  # Not all pages have a overview table
    293:         assert_equal [page.presentation_name, false], [page.presentation_name, page.overview_table.blank?]
    294:       end
    295:     end
    296:   end

[Validate]