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