test/parser_test.rb in trac-wiki-0.1.9 vs test/parser_test.rb in trac-wiki-0.1.12

- old
+ new

@@ -1,11 +1,19 @@ require 'trac-wiki' +require 'pp' + class Bacon::Context def tc(html, wiki, options = {}) TracWiki.render(wiki, options).should.equal html end + def h(hash, wiki, opts = {}) + parser = TracWiki.parser(wiki, opts) + parser.to_html + #pp parser.headers + parser.headings.should == hash + end end describe TracWiki::Parser do it 'should not parse linkd' do tc "<p>[[ahoj]]</p>\n", "[[ahoj]]", :no_link => true @@ -139,16 +147,18 @@ it 'should parse headings' do # Only three differed sized levels of heading are required. tc "<h1>Heading 1</h1>", "= Heading 1 =" tc "<h2>Heading 2</h2>", "== Heading 2 ==" tc "<h3>Heading 3</h3>", "=== Heading 3 ===" - tc "<a name=\"HE3\"/><h3>Heading 3</h3>", "=== Heading 3 === #HE3" - tc "<a name=\"Heading-3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading-3" - tc "<a name=\"Heading/3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading/3" - tc "<a name=\"Heading/3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading/3 " - tc "<a name=\"Heading&lt;3&gt;\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading<3>" - tc "<a name=\"Heading'&quot;3&quot;'\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading'\"3\"'" + tc "<h3 id=\"HE3\">Heading 3</h3>", "=== Heading 3 === #HE3" + tc "<h3 id=\"Heading-3\">Heading 3</h3>", "=== Heading 3 === #Heading-3" + tc "<h3 id=\"Heading/3\">Heading 3</h3>", "=== Heading 3 === #Heading/3" + tc "<h3 id=\"Heading/3\">Heading 3</h3>", "=== Heading 3 === #Heading/3 " + tc "<h3 id=\"Heading/3\">Heading 3</h3><h3 id=\"Heading/3.2\">Heading 3</h3>", + "=== Heading 3 === #Heading/3\n=== Heading 3 === #Heading/3\n " + tc "<h3 id=\"Heading&lt;3&gt;\">Heading 3</h3>", "=== Heading 3 === #Heading<3>" + tc "<h3 id=\"Heading'&quot;3&quot;'\">Heading 3</h3>", "=== Heading 3 === #Heading'\"3\"'" # WARNING: Optional feature, not specified in tc "<h4>Heading 4</h4>", "==== Heading 4 ====" tc "<h5>Heading 5</h5>", "===== Heading 5 =====" tc "<h6>Heading 6</h6>", "====== Heading 6 ======" @@ -180,24 +190,27 @@ end it 'should parse links' do # Links tc "<p><a href=\"link\">link</a></p>\n", "[[link]]" + tc "<p><a href=\"link#link\">link#link</a></p>\n", "[[link#link]]" + tc "<p><a href=\"#link\">#link</a></p>\n", "[[#link]]" # Links can appear in paragraphs (i.e. inline item) tc "<p>Hello, <a href=\"world\">world</a></p>\n", "Hello, [[world]]" # Named links tc "<p><a href=\"MyBigPage\">Go to my page</a></p>\n", "[[MyBigPage|Go to my page]]" # URLs tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>\n", "[[http://www.example.org/]]" + tc "<p><a href=\"http://www.example.org/#anch\">http://www.example.org/#anch</a></p>\n", "[[http://www.example.org/#anch]]" # Single punctuation characters at the end of URLs # should not be considered a part of the URL. [',','.','?','!',':',';','\'','"'].each do |punct| - esc_punct = CGI::escapeHTML(punct) + esc_punct = TracWiki::Parser.escapeHTML(punct) tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a>#{esc_punct}</p>\n", "http://www.example.org/#{punct}" end # Nameds URLs (by example) tc("<p><a href=\"http://www.example.org/\">Visit the Example website</a></p>\n", "[[http://www.example.org/|Visit the Example website]]") @@ -800,8 +813,46 @@ tc "<p>bhoj</p>\n<div class='merge merge-your'>your</div>\n<p>ahoj</p>\n", "bhoj\n>>>>>>> your\nahoj", :merge => true tc "<div class='merge merge-split'></div>\n<p>ahoj</p>\n", "=======\nahoj\n", :merge => true tc "<div class='merge merge-split'>split</div>\n", "======= split", :merge => true tc "<h6></h6><p>ahoj</p>\n", "=======\nahoj\n", :merge => false + end + it 'should compute headers' do + h( [ {:level=>0, :sline=>1, :eline=>2}, + {:title=>"ahoj", :sline=>3, :eline=> 5, :aname=>nil, :level=>2}, + ], + "\nahoj\n== ahoj ==\nbhoj\nchoj\n") + h( [ {:level=>0, :sline=>1, :eline=>2}, + {:title=>"ahoj", :sline=>3, :eline => 5, :aname=>nil, :level=>2}, + {:title=>"dhoj", :sline=>6, :eline => 7, :aname=>nil, :level=>3}, + ], + "\nahoj\n== ahoj ==\nbhoj\nchoj\n===dhoj===\nkuk\n") + h( [ {:level=>0, :sline=>1, :eline=>2}, + {:title=>"ahoj", :sline=>3, :eline => 7, :aname=>nil, :level=>2}, + {:title=>"dhoj", :sline=>8, :eline => 9, :aname=>nil, :level=>3}, + ], + "\nahoj\n== ahoj ==\nbhoj\nchoj\n\n\n===dhoj===\nkuk\n") + h( [ {:level=>0, :sline=>1, :eline=>2}, + {:title=>"ah o ~'j", :sline=>3, :eline => 5, :aname=>nil, :level=>2}, + {:title=>"*dhoj", :sline=>6, :eline => 7, :aname=>'ble', :level=>3}, + ], + "\nahoj\n== ah o ~'j ==\nbhoj\nchoj\n===*dhoj ===#ble\nkuk\n") + h( [ {:level=>0, :sline=>1, :eline=>2}, + {:title=>"ah o ~'j", :sline=>3, :eline => 8, :aname=>nil, :level=>2}, + {:title=>"*dhoj", :sline=>9, :eline => 11, :aname=>'ble', :level=>3}, + ], <<eos) + +ahoj +== ah o ~'j == +{{{ +==a1.5hoj== +}}} + + +===*dhoj ===#ble +kuk + +eos + end end # vim: tw=0