spec/pdfkit_spec.rb in pdfkit-0.5.3 vs spec/pdfkit_spec.rb in pdfkit-0.5.4

- old
+ new

@@ -26,10 +26,15 @@ it "should parse the options into a cmd line friedly format" do pdfkit = PDFKit.new('html', :page_size => 'Letter') pdfkit.options.should have_key('--page-size') end + it "should parse complex options into a cmd line friedly format" do + pdfkit = PDFKit.new('html', :replace => {'value' => 'something else'} ) + pdfkit.options.should have_key('--replace') + end + it "should provide default options" do pdfkit = PDFKit.new('<h1>Oh Hai</h1>') ['--margin-top', '--margin-right', '--margin-bottom', '--margin-left'].each do |option| pdfkit.options.should have_key(option) end @@ -46,57 +51,59 @@ end end context "command" do it "should contstruct the correct command" do - pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12) - pdfkit.command[0].should include('wkhtmltopdf') - pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Letter"' - pdfkit.command[pdfkit.command.index('"--toc-l1-font-size"') + 1].should == '"12"' + pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12, :replace => {'foo' => 'bar'}) + command = pdfkit.command + command.should include "wkhtmltopdf" + command.should include "--page-size Letter" + command.should include "--toc-l1-font-size 12" + command.should include "--replace foo bar" end it "will not include default options it is told to omit" do PDFKit.configure do |config| config.default_options[:disable_smart_shrinking] = true end pdfkit = PDFKit.new('html') - pdfkit.command.should include('"--disable-smart-shrinking"') + pdfkit.command.should include('--disable-smart-shrinking') pdfkit = PDFKit.new('html', :disable_smart_shrinking => false) - pdfkit.command.should_not include('"--disable-smart-shrinking"') + pdfkit.command.should_not include('--disable-smart-shrinking') end it "should encapsulate string arguments in quotes" do pdfkit = PDFKit.new('html', :header_center => "foo [page]") - pdfkit.command[pdfkit.command.index('"--header-center"') + 1].should == '"foo\ \[page\]"' + pdfkit.command.should include "--header-center foo\\ \\[page\\]" end it "should sanitize string arguments" do pdfkit = PDFKit.new('html', :header_center => "$(ls)") - pdfkit.command[pdfkit.command.index('"--header-center"') + 1].should == '"\$\(ls\)"' + pdfkit.command.should include "--header-center \\$\\(ls\\)" end it "read the source from stdin if it is html" do pdfkit = PDFKit.new('html') - pdfkit.command[-2..-1].should == ['"-"', '"-"'] + pdfkit.command.should match /- -$/ end it "specify the URL to the source if it is a url" do pdfkit = PDFKit.new('http://google.com') - pdfkit.command[-2..-1].should == ['"http://google.com"', '"-"'] + pdfkit.command.should match /http:\/\/google.com -$/ end it "should specify the path to the source if it is a file" do file_path = File.join(SPEC_ROOT,'fixtures','example.html') pdfkit = PDFKit.new(File.new(file_path)) - pdfkit.command[-2..-1].should == [%Q{"#{file_path}"}, '"-"'] + pdfkit.command.should match /#{file_path} -$/ end it "should specify the path for the ouput if a apth is given" do file_path = "/path/to/output.pdf" pdfkit = PDFKit.new("html") - pdfkit.command(file_path).last.should == %Q{"#{file_path}"} + pdfkit.command(file_path).should match /#{file_path}$/ end it "should detect special pdfkit meta tags" do body = %{ <html> @@ -105,12 +112,13 @@ <meta name="pdfkit-orientation" content="Landscape"/> </head> </html> } pdfkit = PDFKit.new(body) - pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Legal"' - pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"' + command = pdfkit.command + command.should include "--page-size Legal" + command.should include "--orientation Landscape" end it "should detect special pdfkit meta tags despite bad markup" do body = %{ <html> @@ -120,12 +128,13 @@ </head> <br> </html> } pdfkit = PDFKit.new(body) - pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Legal"' - pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"' + command = pdfkit.command + command.should include "--page-size Legal" + command.should include "--orientation Landscape" end it "should skip non-pdfkit meta tags" do body = %{ <html> @@ -135,11 +144,13 @@ </head> <br> </html> } pdfkit = PDFKit.new(body) - pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"' + command = pdfkit.command + command.should_not include "--page-size Legal" + command.should include "--orientation Landscape" end end context "#to_pdf" do @@ -190,10 +201,14 @@ pdfkit.stylesheets << css pdfkit.to_pdf pdfkit.source.to_s.should include("<style>#{File.read(css)}</style></head>") end + it "should throw an error if it is unable to connect" do + pdfkit = PDFKit.new("http://google.com/this-should-not-be-found/404.html") + lambda { pdfkit.to_pdf }.should raise_error + end end context "#to_file" do before do @file_path = File.join(SPEC_ROOT,'fixtures','test.pdf') @@ -235,7 +250,6 @@ pdfkit = PDFKit.new('html', :header_center => "a title\"; touch #{@test_path} #") pdfkit.to_pdf File.exist?(@test_path).should be_false end end - end