transmuter 0.0.0.1 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,175 @@
1
+ require 'spec_helper'
2
+
3
+ describe CLI do
4
+ describe "Thor" do
5
+ before(:all) do
6
+ @valid_initialize_options = ['README.md']
7
+ end
8
+
9
+ subject { CLI::Runner.new(@valid_initialize_options) }
10
+
11
+ describe "Thor group definition" do
12
+ subject { CLI::Runner }
13
+ it { should respond_to(:desc) }
14
+ it { should respond_to(:class_option) }
15
+ it { should respond_to(:argument) }
16
+ its (:desc) { should_not be_empty }
17
+ its (:arguments) { should_not be_empty }
18
+ end
19
+
20
+ describe "input" do
21
+ it "should have an arguments :input defined" do
22
+ CLI::Runner.arguments.any? { |arg| arg.name == 'input' }.should be_true
23
+ end
24
+
25
+ it "should be required" do
26
+ -> { CLI::Runner.new }.should raise_error Thor::RequiredArgumentMissingError,
27
+ "No value provided for required arguments 'input'"
28
+ end
29
+
30
+ it { should respond_to(:set_input_filename) }
31
+
32
+ it "should set @input_filename" do
33
+ subject.set_input_filename
34
+ subject.instance_variable_get('@input_filename').should == 'README.md'
35
+ end
36
+ end
37
+
38
+ describe "input format" do
39
+ it "should have a class_option input_format defined" do
40
+ CLI::Runner.class_options.should have_key(:input_format)
41
+ end
42
+
43
+ it "should not be required" do
44
+ -> { CLI::Runner.new @valid_initialize_options }.should_not
45
+ raise_error Thor::RequiredArgumentMissingError
46
+ end
47
+
48
+ it { should respond_to(:set_input_fileformat) }
49
+
50
+ it "should set @input_fileformat with --input_format" do
51
+ cli = CLI::Runner.new @valid_initialize_options, input_format: 'format1'
52
+ cli.set_input_fileformat
53
+ cli.instance_variable_get('@input_fileformat').should == "format1"
54
+ end
55
+
56
+ it "should be markdown if the input file extensions is .md" do
57
+ cli = CLI::Runner.new ['README.md']
58
+ cli.set_input_fileformat
59
+ cli.instance_variable_get('@input_fileformat').should == "markdown"
60
+ end
61
+
62
+ it "should be markdown if the input file extensions is .markdown" do
63
+ cli = CLI::Runner.new ['README.markdown']
64
+ cli.set_input_fileformat
65
+ cli.instance_variable_get('@input_fileformat').should == "markdown"
66
+ end
67
+
68
+ it "should be html if the input file extensions is .htm" do
69
+ cli = CLI::Runner.new ['README.htm']
70
+ cli.set_input_fileformat
71
+ cli.instance_variable_get('@input_fileformat').should == "html"
72
+ end
73
+
74
+ it "should be html if the input file extensions is .html" do
75
+ cli = CLI::Runner.new ['README.html']
76
+ cli.set_input_fileformat
77
+ cli.instance_variable_get('@input_fileformat').should == "html"
78
+ end
79
+ end
80
+
81
+ describe "output format" do
82
+
83
+ it "should have a class_option output_format defined" do
84
+ CLI::Runner.class_options.should have_key(:output_format)
85
+ end
86
+
87
+ it "should not be required" do
88
+ -> { CLI::Runner.new @valid_initialize_options }.should_not
89
+ raise_error Thor::RequiredArgumentMissingError
90
+ end
91
+
92
+ it { should respond_to(:set_output_fileformat) }
93
+
94
+ it "should set @output_fileformat with --output_format" do
95
+ cli = CLI::Runner.new @valid_initialize_options, output_format: 'format1'
96
+ cli.set_output_fileformat
97
+ cli.instance_variable_get('@output_fileformat').should == "format1"
98
+ end
99
+
100
+ it "should default to pdf" do
101
+ subject.set_output_fileformat
102
+ subject.instance_variable_get('@output_fileformat').should == "pdf"
103
+ end
104
+ end
105
+
106
+ describe "output" do
107
+ before(:each) do
108
+ subject.set_input_filename
109
+ subject.set_input_fileformat
110
+ subject.set_output_fileformat
111
+ end
112
+
113
+ it "should have an arguments :input defined" do
114
+ CLI::Runner.arguments.any? { |arg| arg.name == 'output' }.should be_true
115
+ end
116
+
117
+ it "should not be required" do
118
+ -> { CLI::Runner.new @valid_initialize_options }.should_not
119
+ raise_error Thor::RequiredArgumentMissingError
120
+ end
121
+
122
+ it { should respond_to(:set_output_filename) }
123
+
124
+ it "should raise an exception of both output_format and output are empty" do
125
+ cli = CLI::Runner.new @valid_initialize_options, output_format: ''
126
+ cli.set_input_filename
127
+ cli.set_input_fileformat
128
+ cli.set_output_fileformat
129
+
130
+ -> { cli.set_output_filename }.should raise_error ArgumentError,
131
+ "Either output or output_format should be given,"
132
+ end
133
+
134
+ it "should set @output_filename" do
135
+ subject.set_output_filename
136
+ subject.instance_variable_get('@output_filename').should == 'README.pdf'
137
+ end
138
+ end
139
+
140
+ describe "stylesheets" do
141
+
142
+ it "should have a class_option stylesheets defined" do
143
+ CLI::Runner.class_options.should have_key(:stylesheets)
144
+ end
145
+
146
+ it "should not be required" do
147
+ -> { CLI::Runner.new @valid_initialize_options }.should_not
148
+ raise_error Thor::RequiredArgumentMissingError
149
+ end
150
+
151
+ it { should respond_to(:set_stylesheets) }
152
+
153
+ it "should set @stylesheets with --stylesheets" do
154
+ cli = CLI::Runner.new @valid_initialize_options, stylesheets: 'stylesheets/test.css'
155
+ cli.set_stylesheets
156
+ cli.instance_variable_get('@stylesheets').should == 'stylesheets/test.css'
157
+ end
158
+
159
+ it "should default to [#{ROOT_PATH}/stylesheets/default.css]" do
160
+ subject.set_stylesheets
161
+ subject.instance_variable_get('@stylesheets').should == ["#{ROOT_PATH}/stylesheets/default.css"]
162
+ end
163
+ end
164
+
165
+ describe "#start" do
166
+ it "should call transmute" do
167
+ CLI::Runner.any_instance.expects(:transmute).returns(true).at_least(1)
168
+ CLI::Runner.any_instance.expects(:transmute!).returns(true).at_least(1)
169
+
170
+ CLI::Runner.start ["README.md"]
171
+ end
172
+ end
173
+
174
+ end
175
+ end
@@ -0,0 +1,138 @@
1
+ require 'spec_helper'
2
+ require 'pdfkit'
3
+
4
+ describe CLI do
5
+ describe "Transmute" do
6
+
7
+ let(:markdown_h1) { '# Heading 1' }
8
+ let(:html_h1) { '<h1>Heading 1</h1>' }
9
+
10
+ before(:all) do
11
+ @valid_arguments = ['README.md']
12
+ @valid_html_options = { output_format: 'html' }
13
+ @valid_pdf_options = { output_format: 'pdf' }
14
+ @valid_html_start_args = begin
15
+ @valid_arguments + begin
16
+ @valid_html_options.collect do |k, v|
17
+ "--#{k.to_s.gsub(/_/, '-')}=#{v}"
18
+ end
19
+ end
20
+ end
21
+ @valid_pdf_start_args = begin
22
+ @valid_arguments + begin
23
+ @valid_pdf_options.collect do |k, v|
24
+ "--#{k.to_s.gsub(/_/, '-')}=#{v}"
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ subject { CLI::Runner.new(@valid_arguments, @valid_html_options) }
31
+
32
+ before(:each) do
33
+ File.stubs(:read).with('README.md').returns(markdown_h1)
34
+ File.stubs(:read).with(::Transmuter::CLI::Runner::DEFAULT_THEME).returns('h1 { color: #000; }')
35
+ File.any_instance.stubs(:write).returns(true)
36
+ end
37
+
38
+ describe "Definitions" do
39
+ it { should respond_to(:transmute) }
40
+ it { should respond_to(:transmute!) }
41
+ end
42
+
43
+ describe "#transmute!" do
44
+ describe "Errors" do
45
+ it "should raise a NameError exception if input is invalid" do
46
+ subject.instance_variable_set("@input_fileformat", 'Invalid')
47
+ -> { subject.transmute! }.should raise_error NameError
48
+ end
49
+
50
+ it "should raise a NameError exception if output is invalid" do
51
+ subject.instance_variable_set("@output_fileformat", 'Invalid')
52
+ -> { subject.transmute! }.should raise_error NameError
53
+ end
54
+
55
+ it "should raise an NotImplementedError if we don't know how to transmute from input to output" do
56
+ subject.instance_variable_set("@output_fileformat", "invalid")
57
+ subject.instance_variable_set("@destination_klass", "set to bypass errors")
58
+ -> { subject.transmute! }.should raise_error NotImplementedError
59
+ end
60
+
61
+ it "should raise an NotImplementedError if we don't know how to process output" do
62
+ not_output = Class.new
63
+ subject.instance_variable_set("@output_fileformat", "invalid")
64
+ subject.instance_variable_set("@destination_klass", not_output)
65
+ -> { subject.transmute! }.should raise_error NotImplementedError
66
+ end
67
+ end
68
+
69
+ describe "Transmuting from markdown to HTML" do
70
+ it "should invoke #transmute!" do
71
+ CLI::Runner.any_instance.expects(:transmute!).at_least(1)
72
+
73
+ CLI::Runner.start @valid_html_start_args
74
+ end
75
+
76
+ it "should read the source file" do
77
+ File.expects(:read).with('README.md').returns(markdown_h1).once
78
+
79
+ CLI::Runner.start @valid_html_start_args
80
+ end
81
+
82
+ it "should write the source file" do
83
+ File.any_instance.expects(:write).once
84
+
85
+ CLI::Runner.start @valid_html_start_args
86
+ end
87
+
88
+ end
89
+
90
+ describe "Transmuting from markdown to PDF" do
91
+ before(:each) do
92
+ pdfkit_instance = mock()
93
+ pdfkit_instance.stubs(:to_pdf).returns true
94
+ PDFKit.stubs(:new).returns(pdfkit_instance)
95
+ end
96
+
97
+ it "should invoke #transmute!" do
98
+ CLI::Runner.any_instance.expects(:transmute!).at_least(1)
99
+
100
+ CLI::Runner.start @valid_pdf_start_args
101
+ end
102
+
103
+ it "should read the source file" do
104
+ File.expects(:read).with('README.md').returns(markdown_h1).once
105
+
106
+ CLI::Runner.start @valid_pdf_start_args
107
+ end
108
+
109
+ it "should write the source file" do
110
+ File.any_instance.expects(:write).once
111
+
112
+ CLI::Runner.start @valid_pdf_start_args
113
+ end
114
+
115
+ end
116
+
117
+ describe "stylesheets" do
118
+ it "should set a default stylesheets" # do
119
+ # Format::Markdown.any_instance.expects(:parse_options).
120
+ # with(stylesheets: "#{ROOT_PATH}/stylesheets/default.css")
121
+ #
122
+ # CLI::Runner.start @valid_html_start_args
123
+ # end
124
+ end
125
+ end
126
+
127
+ describe "#transmute" do
128
+ describe "Errors" do
129
+ it "should not raise a NameError exception" do
130
+ cli = subject.dup
131
+ cli.instance_variable_set("@input_fileformat", 'Invalid')
132
+ -> { cli.transmute }.should_not raise_error NameError
133
+ end
134
+ end
135
+ end
136
+
137
+ end
138
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe CLI do
4
+ end
@@ -0,0 +1,159 @@
1
+ require 'spec_helper'
2
+
3
+ module Format
4
+ describe Html do
5
+ let(:html_h1) { '<h1>Heading 1</h1>' }
6
+ let(:html_ruby) { %(<pre lang=\"ruby\"><code>def say_hi\n &quot;Hello, world!&quot;\nend\n</code></pre>\n) }
7
+
8
+ subject { Html.new(html_h1, stylesheets: "/path/to/file.css") }
9
+
10
+ before(:each) do
11
+ File.stubs(:read).with('/path/to/file.css').returns('h1 { color: #000; }')
12
+ end
13
+
14
+ describe "#new" do
15
+ it "should require html" do
16
+ -> { Html.new }.should raise_error ArgumentError, "wrong number of arguments (0 for 1)"
17
+ end
18
+
19
+ it "should set @html" do
20
+ h = Html.new(html_h1)
21
+ h.instance_variable_get("@html").should == html_h1
22
+ end
23
+ end
24
+
25
+ describe "#parse_options" do
26
+ it "should have parse_options as a protected method" do
27
+ Html.protected_instance_methods.should include(:parse_options)
28
+ end
29
+
30
+ it "should set @options" do
31
+ subject.instance_variable_get('@options').should_not be_empty
32
+ end
33
+ end
34
+
35
+ describe "#read_stylesheet_files" do
36
+ describe "as an Array" do
37
+ it "should have read_stylesheet_files as a protected method" do
38
+ Html.protected_instance_methods.should include(:read_stylesheet_files)
39
+ end
40
+
41
+ it "should reads the stylesheets from the specified files" do
42
+ File.expects(:read).with('/path/to/file.css').once
43
+ subject.send :read_stylesheet_files
44
+ end
45
+ end
46
+
47
+ describe "as a String" do
48
+ it "should have read_stylesheet_files as a protected method" do
49
+ Html.protected_instance_methods.should include(:read_stylesheet_files)
50
+ end
51
+
52
+ it "should reads the stylesheets from the specified files" do
53
+ File.expects(:read).with('/path/to/file.css').once
54
+ subject.send :read_stylesheet_files
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "#include_inline_stylesheets" do
60
+ it "should render html with stylsheets" do
61
+ require 'nokogiri'
62
+ html = "<html><body>#{html_h1}</body></html>"
63
+ styled_html = subject.send(:include_inline_stylesheets, html)
64
+
65
+ doc = Nokogiri::HTML(styled_html)
66
+ doc.search('/html/head').size.should == 1
67
+
68
+ styled_html.should
69
+ match(%r(<html>[^<head>]*<head><style [^>]*>h1 { color: #000; }.*</style>.*</head>[^<head>]*<body>)m)
70
+ end
71
+
72
+ it "should render html with stylsheets even if there's already head" do
73
+ require 'nokogiri'
74
+ html = %(<html><head><link rel="stylesheet" href="styles.css" type="text/css" /></head><body>#{html_h1}</body></html>)
75
+ styled_html = subject.send(:include_inline_stylesheets, html)
76
+
77
+ doc = Nokogiri::HTML(styled_html)
78
+ doc.search('/html/head').size.should == 1
79
+
80
+ styled_html.should
81
+ match(%r(<html>[^<head>]*<head><style [^>]*>h1 { color: #000; }.*</style>.*</head>[^<head>]*<body>)m)
82
+ end
83
+ end
84
+
85
+ describe "#syntax_highlighter" do
86
+ it "should have syntax_highlighter as a protected method" do
87
+ Html.protected_instance_methods.should include(:syntax_highlighter)
88
+ end
89
+
90
+ it "should call Nokogiri::HTML" do
91
+ nokogiri_document = mock()
92
+ nokogiri_document.stubs(:search).returns([])
93
+ Nokogiri.expects(:HTML).with(html_h1).once.returns(nokogiri_document)
94
+
95
+ subject.send :syntax_highlighter
96
+ end
97
+
98
+ it "should call Albino.colorize" do
99
+ pre = mock
100
+ pre.stubs(:text).returns("some html")
101
+ pre.stubs(:[]).with(:lang).returns(:ruby)
102
+ pre.stubs(:replace).returns(true)
103
+ nokogiri_document = mock()
104
+ nokogiri_document.stubs(:search).returns([pre])
105
+ Nokogiri.expects(:HTML).with(html_h1).once.returns(nokogiri_document)
106
+
107
+ Albino.expects(:colorize).once.returns("")
108
+ subject.send(:syntax_highlighter)
109
+ end
110
+ end
111
+
112
+ describe "#process" do
113
+ it { should respond_to :process }
114
+
115
+ describe "call stack" do
116
+ it "should call syntax_highlighter" do
117
+ Html.any_instance.expects(:syntax_highlighter).once.returns(html_h1)
118
+
119
+ subject.process
120
+ end
121
+
122
+ it "should call include_inline_stylesheets" do
123
+ Html.any_instance.expects(:include_inline_stylesheets).once.returns(html_h1)
124
+
125
+ subject.process
126
+ end
127
+
128
+ end
129
+ end
130
+
131
+ describe "#to_pdf" do
132
+ before(:each) do
133
+ pdfkit_instance = mock()
134
+ pdfkit_instance.stubs(:to_pdf).returns true
135
+ PDFKit = mock() unless defined?(PDFKit)
136
+ PDFKit.stubs(:new).returns(pdfkit_instance)
137
+ end
138
+
139
+ it { should respond_to :to_pdf }
140
+
141
+ describe "call stack" do
142
+ it "should call process" do
143
+ Html.any_instance.expects(:process).returns(html_h1).once
144
+
145
+ subject.to_pdf
146
+ end
147
+
148
+ it "should create a new Pdf object" do
149
+ pdf = mock
150
+ pdf.stubs(:process).returns(true)
151
+ Pdf.expects(:new).returns(pdf).once
152
+
153
+ subject.to_pdf
154
+ end
155
+ end
156
+ end
157
+
158
+ end
159
+ end
@@ -0,0 +1,150 @@
1
+ require 'spec_helper'
2
+
3
+ module Format
4
+ describe Markdown do
5
+
6
+ let(:markdown_h1) { '# Heading 1' }
7
+ let(:html_h1) { '<h1>Heading 1</h1>' }
8
+ let(:markdown_ruby) { %(```ruby\ndef say_hi\n "Hello, world!"\nend\n```) }
9
+ let(:html_ruby) { %(<pre lang=\"ruby\"><code>def say_hi\n &quot;Hello, world!&quot;\nend\n</code></pre>\n) }
10
+
11
+ subject { Markdown.new(markdown_h1, stylesheets: "/path/to/file.css") }
12
+
13
+ before(:each) do
14
+ File.stubs(:read).with('/path/to/file.css').returns('h1 { color: #000; }')
15
+ end
16
+
17
+ describe "REDCARPET_OPTIONS" do
18
+ it "shoudle have defined REDCARPET_OPTIONS" do
19
+ Markdown.constants.should include(:REDCARPET_OPTIONS)
20
+ end
21
+
22
+ it "should be equal to [:autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]" do
23
+ Markdown::REDCARPET_OPTIONS.should == [:autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
24
+ end
25
+ end
26
+
27
+ describe "#new" do
28
+ it "should require markdown" do
29
+ -> { Markdown.new }.should raise_error ArgumentError, "wrong number of arguments (0 for 1)"
30
+ end
31
+
32
+ it "should set @markdown" do
33
+ m = Markdown.new(markdown_h1)
34
+ m.instance_variable_get("@markdown").should == markdown_h1
35
+ end
36
+ end
37
+
38
+ describe "#parse_options" do
39
+ it "should have parse_options as a protected method" do
40
+ Markdown.protected_instance_methods.should include(:parse_options)
41
+ end
42
+
43
+ it "should set @options" do
44
+ subject.instance_variable_get('@options').should_not be_empty
45
+ end
46
+
47
+ it "should include :redcarpet_options in the options" do
48
+ redcarpet_options = subject.instance_variable_get('@options')[:redcarpet_options]
49
+ redcarpet_options.should_not be_empty
50
+ redcarpet_options.should == Markdown::REDCARPET_OPTIONS
51
+ end
52
+ end
53
+
54
+ describe "#create_markdown" do
55
+ it "should have create_markdown as a protected method" do
56
+ Markdown.protected_instance_methods.should include(:create_markdown)
57
+ end
58
+
59
+ it "should create a new Redcarpet object" do
60
+ m = subject.send :create_markdown
61
+ m.should be_instance_of Redcarpet
62
+ end
63
+ end
64
+
65
+ describe "#parse_markdown" do
66
+ it "should have parse_markdown as a protected method" do
67
+ Markdown.protected_instance_methods.should include(:parse_markdown)
68
+ end
69
+
70
+ it "should call create_markdown" do
71
+ markdown = mock()
72
+ markdown.stubs(:to_html).returns(true)
73
+ Markdown.any_instance.expects(:create_markdown).once.returns(markdown)
74
+
75
+ subject.send(:parse_markdown)
76
+ end
77
+
78
+ it "should call Redcarpet.to_html" do
79
+ Redcarpet.any_instance.expects(:to_html).returns(true)
80
+
81
+ subject.send(:parse_markdown)
82
+ end
83
+
84
+ it "should render simple markdown" do
85
+ subject.send(:parse_markdown).should match(%r(#{html_h1}))
86
+ end
87
+ end
88
+
89
+ describe "#to_html" do
90
+ describe "call stach" do
91
+ it "should call parse_markdown" do
92
+ Markdown.any_instance.expects(:parse_markdown).once.returns(html_h1)
93
+
94
+ subject.to_html
95
+ end
96
+
97
+ it "should call process on the Html object" do
98
+ Html.any_instance.expects(:process).once.returns(html_h1)
99
+
100
+ subject.to_html
101
+ end
102
+ end
103
+
104
+ it { should respond_to :to_html }
105
+
106
+ it "should call Redcarpet.to_html" do
107
+ Redcarpet.any_instance.expects(:to_html).returns(html_h1)
108
+
109
+ subject.to_html
110
+ end
111
+
112
+ it "should render simple markdown" do
113
+ subject.to_html.should match(%r(#{html_h1}))
114
+ end
115
+
116
+ it "should render simple markdown and include stylesheets" do
117
+ subject.to_html.should
118
+ match(%r(<html>.*<head>.*<style [^>]*>h1 { color: #000; }.*</style>.*</head>.*<body>.*#{html_h1}.*</body>.*</html>)m)
119
+ end
120
+ end
121
+
122
+ describe "#to_pdf" do
123
+ before(:each) do
124
+ pdfkit_instance = mock()
125
+ pdfkit_instance.stubs(:to_pdf).returns true
126
+ PDFKit = mock() unless defined?(PDFKit)
127
+ PDFKit.stubs(:new).returns(pdfkit_instance)
128
+ end
129
+
130
+ it { should respond_to :to_pdf }
131
+
132
+ describe "call stack" do
133
+
134
+ it "should call to_html" do
135
+ Html.any_instance.expects(:process).returns(html_h1).once
136
+
137
+ subject.to_pdf
138
+ end
139
+
140
+ it "should create a new Pdf object" do
141
+ pdf = mock
142
+ pdf.stubs(:process).returns(true)
143
+ Pdf.expects(:new).returns(pdf).once
144
+
145
+ subject.to_pdf
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ module Format
4
+ describe Pdf do
5
+ let(:html_h1) { '<h1>Heading 1</h1>' }
6
+ let(:html_ruby) { %(<pre lang=\"ruby\"><code>def say_hi\n &quot;Hello, world!&quot;\nend\n</code></pre>\n) }
7
+
8
+ subject { Pdf.new(html_h1, stylesheets: "/path/to/file.css") }
9
+
10
+ before(:each) do
11
+ File.stubs(:read).with('/path/to/file.css').returns('h1 { color: #000; }')
12
+ end
13
+
14
+ describe "#new" do
15
+ it "should require html" do
16
+ -> { Pdf.new }.should raise_error ArgumentError, "wrong number of arguments (0 for 1)"
17
+ end
18
+
19
+ it "should set @html" do
20
+ h = Pdf.new(html_h1)
21
+ h.instance_variable_get("@html").should == html_h1
22
+ end
23
+ end
24
+
25
+ describe "#process" do
26
+ it { should respond_to :process }
27
+
28
+ describe "call stack" do
29
+ it "should create a new PDFKit object" do
30
+ pdf = mock
31
+ pdf.stubs(:to_pdf).returns(true)
32
+ PDFKit.expects(:new).with(html_h1, page_size: 'Letter').returns(pdf).once
33
+
34
+ subject.process
35
+ end
36
+
37
+ it "should call to_pdf on the created PDFKit object" do
38
+ pdf = mock
39
+ pdf.expects(:to_pdf).returns(true).once
40
+ PDFKit.expects(:new).with(html_h1, page_size: 'Letter').returns(pdf).once
41
+
42
+ subject.process
43
+ end
44
+
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Format do
4
+ end