]> git.wincent.com - wikitext.git/blobdiff - spec/img_spec.rb
Backend support for HTML5/XML output styles
[wikitext.git] / spec / img_spec.rb
index c1aa46e187c8aa737005c33028f2827c7bd66444..ba2ed597a7b875c413902822a67910b4b157813f 100644 (file)
@@ -30,15 +30,48 @@ describe Wikitext::Parser, 'embedding img tags' do
   end
 
   it 'should convert valid markup into inline image tags' do
-    @parser.parse('{{foo.png}}').should == %Q{<p><img src="/images/foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="/images/foo.png" alt="foo.png"></p>\n}
+    @parser.parse('{{foo.png}}').should == expected
+  end
+
+  it 'should produce XML output if passed option at parse time' do
+    expected = %Q{<p><img src="/images/foo.png" alt="foo.png" /></p>\n}
+    @parser.parse('{{foo.png}}', :output_style => :xml).should == expected
+  end
+
+  it 'should produce XML output if set via instance variable' do
+    expected = %Q{<p><img src="/images/foo.png" alt="foo.png" /></p>\n}
+    parser = Wikitext::Parser.new
+    parser.output_style = :xml
+    parser.parse('{{foo.png}}').should == expected
+  end
+
+  it 'should produce XML output if option set during initialization' do
+    expected = %Q{<p><img src="/images/foo.png" alt="foo.png" /></p>\n}
+    parser = Wikitext::Parser.new :output_style => :xml
+    parser.parse('{{foo.png}}').should == expected
+  end
+
+  it 'should produce HTML output if passed unrecognized output style' do
+    expected = %Q{<p><img src="/images/foo.png" alt="foo.png"></p>\n}
+
+    # the _only_ recognized override is :xml (case-sensitive)
+    @parser.parse('{{foo.png}}', :output_style => :html).should == expected
+    @parser.parse('{{foo.png}}', :output_style => false).should == expected
+    @parser.parse('{{foo.png}}', :output_style => nil).should == expected
+    @parser.parse('{{foo.png}}', :output_style => 42).should == expected
+    @parser.parse('{{foo.png}}', :output_style => 'XML').should == expected
+    @parser.parse('{{foo.png}}', :output_style => :XML).should == expected
   end
 
   it 'should appear embedded in an inline flow' do
-    @parser.parse('before {{foo.png}} after').should == %Q{<p>before <img src="/images/foo.png" alt="foo.png" /> after</p>\n}
+    expected = %Q{<p>before <img src="/images/foo.png" alt="foo.png"> after</p>\n}
+    @parser.parse('before {{foo.png}} after').should == expected
   end
 
   it 'should allow images in subdirectories' do
-    @parser.parse('{{foo/bar.png}}').should == %Q{<p><img src="/images/foo/bar.png" alt="foo/bar.png" /></p>\n}
+    expected = %Q{<p><img src="/images/foo/bar.png" alt="foo/bar.png"></p>\n}
+    @parser.parse('{{foo/bar.png}}').should == expected
   end
 
   it 'should pass through empty image tags unchanged' do
@@ -46,14 +79,14 @@ describe Wikitext::Parser, 'embedding img tags' do
   end
 
   it 'should not append prefix if img src starts with a slash' do
-    @parser.parse('{{/foo.png}}').should ==
-      %Q{<p><img src="/foo.png" alt="/foo.png" /></p>\n}
+    expected = %Q{<p><img src="/foo.png" alt="/foo.png"></p>\n}
+    @parser.parse('{{/foo.png}}').should == expected
   end
 
   it 'should work in BLOCKQUOTE blocks' do
     expected = dedent <<-END
       <blockquote>
-        <p><img src="/images/foo.png" alt="foo.png" /></p>
+        <p><img src="/images/foo.png" alt="foo.png"></p>
       </blockquote>
     END
     @parser.parse('> {{foo.png}}').should == expected
@@ -67,9 +100,9 @@ describe Wikitext::Parser, 'embedding img tags' do
     END
     expected = dedent <<-END
       <ul>
-        <li><img src="/images/foo.png" alt="foo.png" /></li>
-        <li><img src="/images/bar.png" alt="bar.png" /></li>
-        <li><img src="/images/baz.png" alt="baz.png" /></li>
+        <li><img src="/images/foo.png" alt="foo.png"></li>
+        <li><img src="/images/bar.png" alt="bar.png"></li>
+        <li><img src="/images/baz.png" alt="baz.png"></li>
       </ul>
     END
     @parser.parse(input).should == expected
@@ -83,36 +116,42 @@ describe Wikitext::Parser, 'embedding img tags' do
     END
     expected = dedent <<-END
       <ol>
-        <li><img src="/images/foo.png" alt="foo.png" /></li>
-        <li><img src="/images/bar.png" alt="bar.png" /></li>
-        <li><img src="/images/baz.png" alt="baz.png" /></li>
+        <li><img src="/images/foo.png" alt="foo.png"></li>
+        <li><img src="/images/bar.png" alt="bar.png"></li>
+        <li><img src="/images/baz.png" alt="baz.png"></li>
       </ol>
     END
     @parser.parse(input).should == expected
   end
 
   it 'should work in <h1> headings' do
-    @parser.parse('= {{foo.png}} =').should == %Q{<h1><img src="/images/foo.png" alt="foo.png" /></h1>\n}
+    expected = %Q{<h1><img src="/images/foo.png" alt="foo.png"></h1>\n}
+    @parser.parse('= {{foo.png}} =').should == expected
   end
 
   it 'should work in <h2> headings' do
-    @parser.parse('== {{foo.png}} ==').should == %Q{<h2><img src="/images/foo.png" alt="foo.png" /></h2>\n}
+    expected = %Q{<h2><img src="/images/foo.png" alt="foo.png"></h2>\n}
+    @parser.parse('== {{foo.png}} ==').should == expected
   end
 
   it 'should work in <h3> headings' do
-    @parser.parse('=== {{foo.png}} ===').should == %Q{<h3><img src="/images/foo.png" alt="foo.png" /></h3>\n}
+    expected = %Q{<h3><img src="/images/foo.png" alt="foo.png"></h3>\n}
+    @parser.parse('=== {{foo.png}} ===').should == expected
   end
 
   it 'should work in <h4> headings' do
-    @parser.parse('==== {{foo.png}} ====').should == %Q{<h4><img src="/images/foo.png" alt="foo.png" /></h4>\n}
+    expected = %Q{<h4><img src="/images/foo.png" alt="foo.png"></h4>\n}
+    @parser.parse('==== {{foo.png}} ====').should == expected
   end
 
   it 'should work in <h5> headings' do
-    @parser.parse('===== {{foo.png}} =====').should == %Q{<h5><img src="/images/foo.png" alt="foo.png" /></h5>\n}
+    expected = %Q{<h5><img src="/images/foo.png" alt="foo.png"></h5>\n}
+    @parser.parse('===== {{foo.png}} =====').should == expected
   end
 
   it 'should work in <h6> headings' do
-    @parser.parse('====== {{foo.png}} ======').should == %Q{<h6><img src="/images/foo.png" alt="foo.png" /></h6>\n}
+    expected = %Q{<h6><img src="/images/foo.png" alt="foo.png"></h6>\n}
+    @parser.parse('====== {{foo.png}} ======').should == expected
   end
 
   it 'should pass single curly braces through unaltered' do
@@ -124,23 +163,27 @@ describe Wikitext::Parser, 'embedding img tags' do
   end
 
   it 'should have no effect inside PRE_START blocks' do
-    @parser.parse('<pre>{{foo.png}}</pre>').should == %Q{<pre>{{foo.png}}</pre>\n}
+    expected = %Q{<pre>{{foo.png}}</pre>\n}
+    @parser.parse('<pre>{{foo.png}}</pre>').should == expected
   end
 
   it 'should have no effect inside NO_WIKI spans' do
-    @parser.parse('<nowiki>{{foo.png}}</nowiki>').should == %Q{<p>{{foo.png}}</p>\n}
+    expected = %Q{<p>{{foo.png}}</p>\n}
+    @parser.parse('<nowiki>{{foo.png}}</nowiki>').should == expected
   end
 
   it 'should be passed through in internal link targets' do
-    @parser.parse('[[{{foo.png}}]]').should == %Q{<p><a href="/wiki/%7b%7bfoo.png%7d%7d">{{foo.png}}</a></p>\n}
+    expected = %Q{<p><a href="/wiki/%7b%7bfoo.png%7d%7d">{{foo.png}}</a></p>\n}
+    @parser.parse('[[{{foo.png}}]]').should == expected
   end
 
   it 'should be passed through in internal link text' do
-    @parser.parse('[[article|{{foo.png}}]]').should == %Q{<p><a href="/wiki/article">{{foo.png}}</a></p>\n}
+    expected = %Q{<p><a href="/wiki/article">{{foo.png}}</a></p>\n}
+    @parser.parse('[[article|{{foo.png}}]]').should == expected
   end
 
   it 'should not be allowed as an external link target' do
-    expected = %Q{<p>[<img src="/images/foo.png" alt="foo.png" /> the link]</p>\n}
+    expected = %Q{<p>[<img src="/images/foo.png" alt="foo.png"> the link]</p>\n}
     @parser.parse('[{{foo.png}} the link]').should == expected
   end
 
@@ -150,7 +193,8 @@ describe Wikitext::Parser, 'embedding img tags' do
   end
 
   it 'should not allow embedded quotes' do
-    @parser.parse('{{"fun".png}}').should == %Q{<p>{{&quot;fun&quot;.png}}</p>\n}
+    expected = %Q{<p>{{&quot;fun&quot;.png}}</p>\n}
+    @parser.parse('{{"fun".png}}').should == expected
   end
 
   it 'should not allow embedded spaces' do
@@ -163,31 +207,37 @@ describe Wikitext::Parser, 'embedding img tags' do
 
   it 'should allow overrides of the image prefix at initialization time' do
     parser = Wikitext::Parser.new(:img_prefix => '/gfx/')
-    parser.parse('{{foo.png}}').should == %Q{<p><img src="/gfx/foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="/gfx/foo.png" alt="foo.png"></p>\n}
+    parser.parse('{{foo.png}}').should == expected
   end
 
   it 'should suppress the image prefix if passed an empty string at initialization time' do
     parser = Wikitext::Parser.new(:img_prefix => '')
-    parser.parse('{{foo.png}}').should == %Q{<p><img src="foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="foo.png" alt="foo.png"></p>\n}
+    parser.parse('{{foo.png}}').should == expected
   end
 
   it 'should suppress image prefix if passed nil at initialization time' do
     parser = Wikitext::Parser.new(:img_prefix => nil)
-    parser.parse('{{foo.png}}').should == %Q{<p><img src="foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="foo.png" alt="foo.png"></p>\n}
+    parser.parse('{{foo.png}}').should == expected
   end
 
   it 'should allow overrides of the image prefix after initialization' do
     @parser.img_prefix = '/gfx/'
-    @parser.parse('{{foo.png}}').should == %Q{<p><img src="/gfx/foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="/gfx/foo.png" alt="foo.png"></p>\n}
+    @parser.parse('{{foo.png}}').should == expected
   end
 
   it 'should suppress image if prefix set to an empty string after initialization' do
     @parser.img_prefix = ''
-    @parser.parse('{{foo.png}}').should == %Q{<p><img src="foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="foo.png" alt="foo.png"></p>\n}
+    @parser.parse('{{foo.png}}').should == expected
   end
 
   it 'should suppress image if prefix set to nil after initialization' do
     @parser.img_prefix = nil
-    @parser.parse('{{foo.png}}').should == %Q{<p><img src="foo.png" alt="foo.png" /></p>\n}
+    expected = %Q{<p><img src="foo.png" alt="foo.png"></p>\n}
+    @parser.parse('{{foo.png}}').should == expected
   end
 end