require "web" require "test/unit" require "revision" class MockWeb < Web; attr_accessor :markup def pages() MockPages.new end def safe_mode() false end end class MockPages def [](wiki_word) %w( MyWay ThatWay SmartEngine ).include?(wiki_word) end end class MockPage attr_accessor :web, :revisions def name() "page" end end class RevisionTest < Test::Unit::TestCase def setup @mock_page = MockPage.new @mock_web = MockWeb.new @mock_page.web = @mock_web @mock_web.markup = :textile @revision = Revision.new( @mock_page, 1, "HisWay would be MyWay in kinda ThatWay in HisWay though MyWay \\OverThere -- see SmartEngine in that SmartEngineGUI", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson" ) @revision_with_auto_links = Revision.new( @mock_page, 1, "http://www.loudthinking.com/ points to ThatWay from david@loudthinking.com", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson" ) @revision_with_aliased_links = Revision.new( @mock_page, 1, "Would a [[SmartEngine|clever motor]] go by any other name?", Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_wiki_word_in_em = Revision.new( @mock_page, 1, "_should we go ThatWay or ThisWay _", Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_pre_blocks = Revision.new( @mock_page, 1, "A class SmartEngine end would not mark up
CodeBlocks
", Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_wikiword_in_tag = Revision.new( @mock_page, 1, "That is some Stylish Emphasis", Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_autolink_in_parentheses = Revision.new( @mock_page, 1, 'The W3C body (http://www.w3c.org) sets web standards', Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_link_in_parentheses = Revision.new( @mock_page, 1, 'Instiki is a "Wiki Clone":http://www.c2.com/cgi/wiki?WikiWikiClones ("What is a wiki?":http://wiki.org/wiki.cgi?WhatIsWiki) that\'s so easy to setup', Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_image_link = Revision.new( @mock_page, 1, 'This !http://hobix.com/sample.jpg! is a Textile image link.', Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_nowiki_text = Revision.new( @mock_page, 1, 'Do not mark up [[this text]] or http://www.thislink.com.', Time.local(2004, 4, 4, 16, 50), "MarkReid" ) @revision_with_bracketted_wiki_word = Revision.new( @mock_page, 1, 'This is a WikiWord and a tricky name [[Sperberg-McQueen]].', Time.local(2004, 4, 4, 16, 50), "MarkReid" ) end def test_wiki_words assert_equal %w( HisWay MyWay SmartEngine SmartEngineGUI ThatWay ), @revision.wiki_words.sort end def test_existing_pages assert_equal %w( MyWay SmartEngine ThatWay ), @revision.existing_pages.sort end def test_unexisting_pages assert_equal %w( HisWay SmartEngineGUI ), @revision.unexisting_pages.sort end def test_content_with_wiki_links assert_equal "

His Way? would be My Way in kinda That Way in His Way? though My Way OverThere—see Smart Engine in that Smart Engine GUI?

", @revision.display_content end def test_bluecloth @mock_web.markup = :markdown @revision = Revision.new( @mock_page, 1, "My Headline\n===========\n\n that SmartEngineGUI", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson" ) @revision_with_code_block = Revision.new( @mock_page, 1, "This is a code block:\n def a_method(arg)\n return ThatWay\n\nNice!", Time.local(2004, 4, 4, 16, 50), "MarkReid" ) assert_equal "

My Headline

\n\n

that Smart Engine GUI?

", @revision.display_content assert_equal "

This is a code block:

\n\n
def a_method(arg)\nreturn ThatWay\n
\n\n

Nice!

", @revision_with_code_block.display_content end def test_rdoc @mock_web.markup = :rdoc @revision = Revision.new( @mock_page, 1, "+hello+ that SmartEngineGUI", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson" ) assert_equal "hello that Smart Engine GUI?\n\n", @revision.display_content end def test_content_with_auto_links assert_equal "

http://www.loudthinking.com/ points to That Way from david@loudthinking.com

", @revision_with_auto_links.display_content end def test_content_with_aliased_links assert_equal "

Would a clever motor go by any other name?

", @revision_with_aliased_links.display_content end def test_content_with_wikiword_in_em assert_equal "

should we go That Way or This Way?

", @revision_with_wiki_word_in_em.display_content end def test_content_with_wikiword_in_tag assert_equal "

That is some Stylish Emphasis

", @revision_with_wikiword_in_tag.display_content end def test_content_with_pre_blocks assert_equal "A class SmartEngine end would not mark up
CodeBlocks
", @revision_with_pre_blocks.display_content end def test_content_with_autolink_in_parentheses assert_equal '

The W3C body (http://www.w3c.org) sets web standards

', @revision_with_autolink_in_parentheses.display_content end def test_content_with_link_in_parentheses assert_equal '

Instiki is a Wiki Clone (What is a wiki?) that’s so easy to setup

', @revision_with_link_in_parentheses.display_content end def test_content_with_image_link assert_equal '

This is a Textile image link.

', @revision_with_image_link.display_content end def test_content_with_nowiki_text assert_equal '

Do not mark up [[this text]] or http://www.thislink.com.

', @revision_with_nowiki_text.display_content end def test_content_with_bracketted_wiki_word @mock_web.brackets_only = true assert_equal '

This is a WikiWord and a tricky name Sperberg-McQueen?.

', @revision_with_bracketted_wiki_word.display_content end def test_content_for_export assert_equal "

His Way would be My Way in kinda That Way in His Way though My Way OverThere—see Smart Engine in that Smart Engine GUI

", @revision.display_content_for_export end def test_double_replacing @revision.content = "VersionHistory\r\n\r\ncry VersionHistory" assert_equal( "

Version History?

\n\n\t

cry Version History?

", @revision.display_content ) @revision.clear_display_cache @revision.content = "f\r\nVersionHistory\r\n\r\ncry VersionHistory" assert_equal( "

f
\nVersion History?

\n\n\t

cry Version History?

", @revision.display_content ) end def test_difficult_wiki_words @revision.content = "[[It's just awesome GUI!]]" assert_equal( "

It’s just awesome GUI!?

", @revision.display_content ) end def test_revisions_diff page = MockPage.new web = MockWeb.new web.markup = :textile page.web = web page.revisions = [ 0 ] page.revisions << Revision.new(page, 1, "What a blue and lovely morning", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson") page.revisions << Revision.new(page, 2, "What a red and lovely morning today", Time.local(2004, 4, 4, 16, 50), "DavidHeinemeierHansson") assert_equal "

What a blue red and lovely morningmorning today

", page.revisions.last.display_diff end end