wicked_pdf 2.0.2 → 2.7.0

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.
@@ -2,23 +2,6 @@ require 'test_helper'
2
2
  WickedPdf.config = { :exe_path => ENV['WKHTMLTOPDF_BIN'] || '/usr/local/bin/wkhtmltopdf' }
3
3
  HTML_DOCUMENT = '<html><body>Hello World</body></html>'.freeze
4
4
 
5
- # Provide a public accessor to the normally-private parse_options function.
6
- # Also, smash the returned array of options into a single string for
7
- # convenience in testing below.
8
- class WickedPdf
9
- undef :binary_version
10
- undef :binary_version=
11
- attr_accessor :binary_version
12
-
13
- def get_parsed_options(opts)
14
- parse_options(opts).join(' ')
15
- end
16
-
17
- def get_valid_option(name)
18
- valid_option(name)
19
- end
20
- end
21
-
22
5
  class WickedPdfTest < ActiveSupport::TestCase
23
6
  def setup
24
7
  @wp = WickedPdf.new
@@ -86,146 +69,6 @@ class WickedPdfTest < ActiveSupport::TestCase
86
69
  end
87
70
  end
88
71
 
89
- test 'should parse header and footer options' do
90
- [:header, :footer].each do |hf|
91
- [:center, :font_name, :left, :right].each do |o|
92
- assert_equal "--#{hf}-#{o.to_s.tr('_', '-')} header_footer",
93
- @wp.get_parsed_options(hf => { o => 'header_footer' }).strip
94
- end
95
-
96
- [:font_size, :spacing].each do |o|
97
- assert_equal "--#{hf}-#{o.to_s.tr('_', '-')} 12",
98
- @wp.get_parsed_options(hf => { o => '12' }).strip
99
- end
100
-
101
- assert_equal "--#{hf}-line",
102
- @wp.get_parsed_options(hf => { :line => true }).strip
103
- assert_equal "--#{hf}-html http://www.abc.com",
104
- @wp.get_parsed_options(hf => { :html => { :url => 'http://www.abc.com' } }).strip
105
- end
106
- end
107
-
108
- test 'should parse toc options' do
109
- toc_option = @wp.get_valid_option('toc')
110
-
111
- [:font_name, :header_text].each do |o|
112
- assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')} toc",
113
- @wp.get_parsed_options(:toc => { o => 'toc' }).strip
114
- end
115
-
116
- [
117
- :depth, :header_fs, :l1_font_size, :l2_font_size, :l3_font_size, :l4_font_size,
118
- :l5_font_size, :l6_font_size, :l7_font_size, :l1_indentation, :l2_indentation,
119
- :l3_indentation, :l4_indentation, :l5_indentation, :l6_indentation, :l7_indentation
120
- ].each do |o|
121
- assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')} 5",
122
- @wp.get_parsed_options(:toc => { o => 5 }).strip
123
- end
124
-
125
- [:no_dots, :disable_links, :disable_back_links].each do |o|
126
- assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')}",
127
- @wp.get_parsed_options(:toc => { o => true }).strip
128
- end
129
- end
130
-
131
- test 'should parse outline options' do
132
- assert_equal '--outline', @wp.get_parsed_options(:outline => { :outline => true }).strip
133
- assert_equal '--outline-depth 5', @wp.get_parsed_options(:outline => { :outline_depth => 5 }).strip
134
- end
135
-
136
- test 'should parse no_images option' do
137
- assert_equal '--no-images', @wp.get_parsed_options(:no_images => true).strip
138
- assert_equal '--images', @wp.get_parsed_options(:images => true).strip
139
- end
140
-
141
- test 'should parse margins options' do
142
- [:top, :bottom, :left, :right].each do |o|
143
- assert_equal "--margin-#{o} 12", @wp.get_parsed_options(:margin => { o => '12' }).strip
144
- end
145
- end
146
-
147
- test 'should parse cover' do
148
- cover_option = @wp.get_valid_option('cover')
149
-
150
- pathname = Rails.root.join('app', 'views', 'pdf', 'file.html')
151
- assert_equal "#{cover_option} http://example.org", @wp.get_parsed_options(:cover => 'http://example.org').strip, 'URL'
152
- assert_equal "#{cover_option} #{pathname}", @wp.get_parsed_options(:cover => pathname).strip, 'Pathname'
153
- assert_match %r{#{cover_option} .+wicked_cover_pdf.+\.html}, @wp.get_parsed_options(:cover => '<html><body>HELLO</body></html>').strip, 'HTML'
154
- end
155
-
156
- test 'should parse other options' do
157
- [
158
- :orientation, :page_size, :proxy, :username, :password, :dpi,
159
- :encoding, :user_style_sheet
160
- ].each do |o|
161
- assert_equal "--#{o.to_s.tr('_', '-')} opts", @wp.get_parsed_options(o => 'opts').strip
162
- end
163
-
164
- [:cookie, :post].each do |o|
165
- assert_equal "--#{o.to_s.tr('_', '-')} name value", @wp.get_parsed_options(o => 'name value').strip
166
-
167
- nv_formatter = proc { |number| "--#{o.to_s.tr('_', '-')} par#{number} val#{number}" }
168
- assert_equal "#{nv_formatter.call(1)} #{nv_formatter.call(2)}", @wp.get_parsed_options(o => ['par1 val1', 'par2 val2']).strip
169
- end
170
-
171
- [:redirect_delay, :zoom, :page_offset].each do |o|
172
- assert_equal "--#{o.to_s.tr('_', '-')} 5", @wp.get_parsed_options(o => 5).strip
173
- end
174
-
175
- [
176
- :book, :default_header, :disable_javascript, :grayscale, :lowquality,
177
- :enable_plugins, :disable_internal_links, :disable_external_links,
178
- :print_media_type, :disable_smart_shrinking, :use_xserver, :no_background
179
- ].each do |o|
180
- assert_equal "--#{o.to_s.tr('_', '-')}", @wp.get_parsed_options(o => true).strip
181
- end
182
- end
183
-
184
- test 'should extract old wkhtmltopdf version' do
185
- version_info_sample = "Name:\n wkhtmltopdf 0.9.9\n\nLicense:\n Copyright (C) 2008,2009 Wkhtmltopdf Authors.\n\n\n\n License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n This is free software: you are free to change and redistribute it. There is NO\n WARRANTY, to the extent permitted by law.\n\nAuthors:\n Written by Jakob Truelsen. Patches by Mrio Silva, Benoit Garret and Emmanuel\n Bouthenot.\n"
186
- assert_equal WickedPdf::DEFAULT_BINARY_VERSION, @wp.send(:parse_version, version_info_sample)
187
- end
188
-
189
- test 'should extract new wkhtmltopdf version' do
190
- version_info_sample = "Name:\n wkhtmltopdf 0.11.0 rc2\n\nLicense:\n Copyright (C) 2010 wkhtmltopdf/wkhtmltoimage Authors.\n\n\n\n License LGPLv3+: GNU Lesser General Public License version 3 or later\n <http://gnu.org/licenses/lgpl.html>. This is free software: you are free to\n change and redistribute it. There is NO WARRANTY, to the extent permitted by\n law.\n\nAuthors:\n Written by Jan Habermann, Christian Sciberras and Jakob Truelsen. Patches by\n Mehdi Abbad, Lyes Amazouz, Pascal Bach, Emmanuel Bouthenot, Benoit Garret and\n Mario Silva."
191
- assert_equal Gem::Version.new('0.11.0'), @wp.send(:parse_version, version_info_sample)
192
- end
193
-
194
- test 'should extract wkhtmltopdf version with nondigit symbols' do
195
- version_info_sample = "Name:\n wkhtmltopdf 0.10.4b\n\nLicense:\n Copyright (C) 2008,2009 Wkhtmltopdf Authors.\n\n\n\n License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n This is free software: you are free to change and redistribute it. There is NO\n WARRANTY, to the extent permitted by law.\n\nAuthors:\n Written by Jakob Truelsen. Patches by Mrio Silva, Benoit Garret and Emmanuel\n Bouthenot.\n"
196
- assert_equal Gem::Version.new('0.10.4b'), @wp.send(:parse_version, version_info_sample)
197
- end
198
-
199
- test 'should fallback to default version on parse error' do
200
- assert_equal WickedPdf::DEFAULT_BINARY_VERSION, @wp.send(:parse_version, '')
201
- end
202
-
203
- test 'should set version on initialize' do
204
- assert_not_equal @wp.send(:binary_version), ''
205
- end
206
-
207
- test 'should not use double dash options for version without dashes' do
208
- @wp.binary_version = WickedPdf::BINARY_VERSION_WITHOUT_DASHES
209
-
210
- %w[toc cover].each do |name|
211
- assert_equal @wp.get_valid_option(name), name
212
- end
213
- end
214
-
215
- test 'should use double dash options for version with dashes' do
216
- @wp.binary_version = Gem::Version.new('0.11.0')
217
-
218
- %w[toc cover].each do |name|
219
- assert_equal @wp.get_valid_option(name), "--#{name}"
220
- end
221
- end
222
-
223
- test '-- options should not be given after object' do
224
- options = { :header => { :center => 3 }, :cover => 'http://example.org', :disable_javascript => true }
225
- cover_option = @wp.get_valid_option('cover')
226
- assert_equal @wp.get_parsed_options(options), "--disable-javascript --header-center 3 #{cover_option} http://example.org"
227
- end
228
-
229
72
  test 'should output progress when creating pdfs on compatible hosts' do
230
73
  wp = WickedPdf.new
231
74
  output = []
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  class WkhtmltopdfLocationTest < ActiveSupport::TestCase
4
2
  setup do
5
3
  @saved_config = WickedPdf.config
data/wicked_pdf.gemspec CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'wicked_pdf/version'
@@ -24,7 +23,6 @@ DESC
24
23
 
25
24
  spec.required_ruby_version = Gem::Requirement.new('>= 2.2')
26
25
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
27
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
28
26
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
29
27
  spec.require_paths = ['lib']
30
28
 
@@ -32,11 +30,11 @@ DESC
32
30
 
33
31
  spec.add_dependency 'activesupport'
34
32
 
35
- spec.add_development_dependency 'rails'
36
33
  spec.add_development_dependency 'bundler'
34
+ spec.add_development_dependency 'mocha', '= 1.3'
35
+ spec.add_development_dependency 'rails'
37
36
  spec.add_development_dependency 'rake'
38
- spec.add_development_dependency 'rubocop', '~> 0.68.0'
37
+ spec.add_development_dependency 'rubocop', '~> 1.46'
39
38
  spec.add_development_dependency 'sqlite3', '~> 1.3'
40
- spec.add_development_dependency 'mocha', '= 1.3'
41
39
  spec.add_development_dependency 'test-unit'
42
40
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Z. Sterrett
8
8
  - David Jones
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-18 00:00:00.000000000 Z
12
+ date: 2023-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -26,7 +26,7 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rails
29
+ name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
@@ -40,21 +40,21 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: bundler
43
+ name: mocha
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '1.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '1.3'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rake
57
+ name: rails
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,45 +68,45 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rubocop
71
+ name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.68.0
76
+ version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.68.0
83
+ version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: sqlite3
85
+ name: rubocop
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '1.3'
90
+ version: '1.46'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.3'
97
+ version: '1.46'
98
98
  - !ruby/object:Gem::Dependency
99
- name: mocha
99
+ name: sqlite3
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '='
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
104
  version: '1.3'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '='
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: '1.3'
112
112
  - !ruby/object:Gem::Dependency
@@ -135,29 +135,29 @@ extensions: []
135
135
  extra_rdoc_files: []
136
136
  files:
137
137
  - ".github/issue_template.md"
138
+ - ".github/workflows/ci.yml"
138
139
  - ".gitignore"
139
140
  - ".rubocop.yml"
140
141
  - ".rubocop_todo.yml"
141
- - ".travis.yml"
142
142
  - CHANGELOG.md
143
143
  - Gemfile
144
144
  - LICENSE.txt
145
145
  - README.md
146
146
  - Rakefile
147
- - gemfiles/4.0.gemfile
148
- - gemfiles/4.1.gemfile
149
- - gemfiles/4.2.gemfile
150
147
  - gemfiles/5.0.gemfile
151
148
  - gemfiles/5.1.gemfile
152
149
  - gemfiles/5.2.gemfile
153
150
  - gemfiles/6.0.gemfile
154
- - gemfiles/rails_edge.gemfile
151
+ - gemfiles/6.1.gemfile
152
+ - gemfiles/7.0.gemfile
155
153
  - generators/wicked_pdf/templates/wicked_pdf.rb
156
154
  - generators/wicked_pdf/wicked_pdf_generator.rb
157
155
  - init.rb
158
156
  - lib/generators/wicked_pdf_generator.rb
159
157
  - lib/wicked_pdf.rb
158
+ - lib/wicked_pdf/binary.rb
160
159
  - lib/wicked_pdf/middleware.rb
160
+ - lib/wicked_pdf/option_parser.rb
161
161
  - lib/wicked_pdf/pdf_helper.rb
162
162
  - lib/wicked_pdf/progress.rb
163
163
  - lib/wicked_pdf/railtie.rb
@@ -174,6 +174,8 @@ files:
174
174
  - test/functional/wicked_pdf_helper_assets_test.rb
175
175
  - test/functional/wicked_pdf_helper_test.rb
176
176
  - test/test_helper.rb
177
+ - test/unit/wicked_pdf_binary_test.rb
178
+ - test/unit/wicked_pdf_option_parser_test.rb
177
179
  - test/unit/wicked_pdf_test.rb
178
180
  - test/unit/wkhtmltopdf_location_test.rb
179
181
  - wicked_pdf.gemspec
@@ -182,7 +184,7 @@ licenses:
182
184
  - MIT
183
185
  metadata:
184
186
  changelog_uri: https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md
185
- post_install_message:
187
+ post_install_message:
186
188
  rdoc_options: []
187
189
  require_paths:
188
190
  - lib
@@ -198,8 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
200
  version: '0'
199
201
  requirements:
200
202
  - wkhtmltopdf
201
- rubygems_version: 3.0.6
202
- signing_key:
203
+ rubygems_version: 3.3.7
204
+ signing_key:
203
205
  specification_version: 4
204
206
  summary: PDF generator (from HTML) gem for Ruby on Rails
205
207
  test_files:
@@ -212,5 +214,7 @@ test_files:
212
214
  - test/functional/wicked_pdf_helper_assets_test.rb
213
215
  - test/functional/wicked_pdf_helper_test.rb
214
216
  - test/test_helper.rb
217
+ - test/unit/wicked_pdf_binary_test.rb
218
+ - test/unit/wicked_pdf_option_parser_test.rb
215
219
  - test/unit/wicked_pdf_test.rb
216
220
  - test/unit/wkhtmltopdf_location_test.rb
data/.travis.yml DELETED
@@ -1,79 +0,0 @@
1
- language:
2
- - ruby
3
- git:
4
- depth: 1
5
- quiet: true
6
- before_install:
7
- - sudo apt-get update -qq
8
- bundler_args: --verbose
9
- sudo: required
10
- services:
11
- - xvfb
12
- before_script:
13
- - bundle list
14
- - sudo apt-get install -y wkhtmltopdf
15
- env: WKHTMLTOPDF_BIN=/usr/bin/wkhtmltopdf
16
- script:
17
- - bundle exec rake
18
- matrix:
19
- include:
20
- - rvm: 2.2
21
- gemfile: gemfiles/4.0.gemfile
22
- - rvm: 2.2
23
- gemfile: gemfiles/4.1.gemfile
24
- - rvm: 2.2
25
- gemfile: gemfiles/4.2.gemfile
26
- - rvm: 2.3
27
- gemfile: gemfiles/5.0.gemfile
28
- before_install:
29
- # https://github.com/danmayer/coverband/issues/162
30
- - "find /home/travis/.rvm/rubies -wholename '*default/bundler-*.gemspec' -delete"
31
- - rvm @global do gem uninstall bundler -a -x -I || true
32
- - gem install bundler -v '< 2'
33
- - rvm: 2.4
34
- gemfile: gemfiles/5.1.gemfile
35
- before_install:
36
- - "find /home/travis/.rvm/rubies -wholename '*default/bundler-*.gemspec' -delete"
37
- - rvm @global do gem uninstall bundler -a -x -I || true
38
- - gem install bundler -v '< 2'
39
- - rvm: 2.5
40
- gemfile: gemfiles/5.2.gemfile
41
- before_install:
42
- - gem update --system
43
- - gem install bundler
44
- - rvm: 2.5
45
- gemfile: gemfiles/rails_edge.gemfile
46
- before_install:
47
- - gem update --system
48
- - gem install bundler
49
- - rvm: 2.6
50
- gemfile: gemfiles/5.2.gemfile
51
- before_install:
52
- - gem update --system
53
- - gem install bundler
54
- - rvm: 2.6
55
- gemfile: gemfiles/6.0.gemfile
56
- before_install:
57
- - gem update --system
58
- - gem install bundler
59
- - rvm: 2.6
60
- gemfile: gemfiles/rails_edge.gemfile
61
- before_install:
62
- - gem update --system
63
- - gem install bundler
64
- - rvm: ruby-head
65
- gemfile: gemfiles/5.2.gemfile
66
- before_install:
67
- - gem install bundler -v '~> 2'
68
- - rvm: ruby-head
69
- gemfile: gemfiles/rails_edge.gemfile
70
- before_install:
71
- - gem install bundler -v '~> 2'
72
- allow_failures:
73
- - rvm: 2.5
74
- gemfile: gemfiles/rails_edge.gemfile
75
- - rvm: 2.6
76
- gemfile: gemfiles/rails_edge.gemfile
77
- - rvm: 2.5.3
78
- gemfile: gemfiles/3.0.gemfile
79
- - rvm: ruby-head
data/gemfiles/4.0.gemfile DELETED
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 4.0.0'
5
- gem 'sqlite3', '~> 1.3.6'
6
-
7
- gemspec path: '../'
data/gemfiles/4.1.gemfile DELETED
@@ -1,7 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 4.1.0'
5
- gem 'sqlite3', '~> 1.3.6'
6
-
7
- gemspec path: '../'
data/gemfiles/4.2.gemfile DELETED
@@ -1,9 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rdoc'
4
- gem 'bundler', '~>1.3'
5
- gem 'sqlite3', '~> 1.3.6'
6
- gem 'sprockets', '~>3.0'
7
- gem 'rails', '~> 4.2.0'
8
-
9
- gemspec path: '../'
@@ -1,9 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rdoc'
4
- gem 'rails', git: 'https://github.com/rails/rails.git'
5
- gem 'sqlite3', '~> 1.4'
6
- gem 'bootsnap' # required to run `rake test` in Rails 6.0
7
- gem 'mocha', '= 1.3' # newer versions blow up
8
-
9
- gemspec path: '../'