wicked_pdf 1.1.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,13 +5,8 @@ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
5
 
6
6
  require 'test/unit'
7
7
  require 'mocha'
8
-
9
- if Rails::VERSION::MAJOR == 2
10
- require 'test_help'
11
- else
12
- require 'rails/test_help'
13
- require 'mocha/test_unit'
14
- end
8
+ require 'rails/test_help'
9
+ require 'mocha/test_unit'
15
10
 
16
11
  require 'wicked_pdf'
17
12
 
@@ -24,7 +19,15 @@ if (assets_dir = Rails.root.join('app/assets')) && File.directory?(assets_dir)
24
19
  File.open(destination, 'w') { |f| f.write(source) }
25
20
 
26
21
  # Copy JS file
27
- destination = assets_dir.join('javascripts/wicked.js')
22
+ js_dir = assets_dir.join('javascripts')
23
+ Dir.mkdir(js_dir) unless File.directory?(js_dir)
24
+ destination = js_dir.join('wicked.js')
28
25
  source = File.read('test/fixtures/wicked.js')
29
26
  File.open(destination, 'w') { |f| f.write(source) }
27
+
28
+ config_dir = assets_dir.join('config')
29
+ Dir.mkdir(config_dir) unless File.directory?(config_dir)
30
+ source = File.read('test/fixtures/manifest.js')
31
+ destination = config_dir.join('manifest.js')
32
+ File.open(destination, 'w') { |f| f.write(source) }
30
33
  end
@@ -1,5 +1,4 @@
1
1
  require 'test_helper'
2
-
3
2
  WickedPdf.config = { :exe_path => ENV['WKHTMLTOPDF_BIN'] || '/usr/local/bin/wkhtmltopdf' }
4
3
  HTML_DOCUMENT = '<html><body>Hello World</body></html>'.freeze
5
4
 
@@ -7,7 +6,10 @@ HTML_DOCUMENT = 'Hello World'.freeze
7
6
  # Also, smash the returned array of options into a single string for
8
7
  # convenience in testing below.
9
8
  class WickedPdf
9
+ undef :binary_version
10
+ undef :binary_version=
10
11
  attr_accessor :binary_version
12
+
11
13
  def get_parsed_options(opts)
12
14
  parse_options(opts).join(' ')
13
15
  end
@@ -131,6 +133,11 @@ class WickedPdfTest < ActiveSupport::TestCase
131
133
  assert_equal '--outline-depth 5', @wp.get_parsed_options(:outline => { :outline_depth => 5 }).strip
132
134
  end
133
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
+
134
141
  test 'should parse margins options' do
135
142
  [:top, :bottom, :left, :right].each do |o|
136
143
  assert_equal "--margin-#{o} 12", @wp.get_parsed_options(:margin => { o => '12' }).strip
@@ -200,7 +207,7 @@ class WickedPdfTest < ActiveSupport::TestCase
200
207
  test 'should not use double dash options for version without dashes' do
201
208
  @wp.binary_version = WickedPdf::BINARY_VERSION_WITHOUT_DASHES
202
209
 
203
- %w(toc cover).each do |name|
210
+ %w[toc cover].each do |name|
204
211
  assert_equal @wp.get_valid_option(name), name
205
212
  end
206
213
  end
@@ -208,7 +215,7 @@ class WickedPdfTest < ActiveSupport::TestCase
208
215
  test 'should use double dash options for version with dashes' do
209
216
  @wp.binary_version = Gem::Version.new('0.11.0')
210
217
 
211
- %w(toc cover).each do |name|
218
+ %w[toc cover].each do |name|
212
219
  assert_equal @wp.get_valid_option(name), "--#{name}"
213
220
  end
214
221
  end
@@ -218,4 +225,16 @@ class WickedPdfTest < ActiveSupport::TestCase
218
225
  cover_option = @wp.get_valid_option('cover')
219
226
  assert_equal @wp.get_parsed_options(options), "--disable-javascript --header-center 3 #{cover_option} http://example.org"
220
227
  end
228
+
229
+ test 'should output progress when creating pdfs on compatible hosts' do
230
+ wp = WickedPdf.new
231
+ output = []
232
+ options = { :progress => proc { |o| output << o } }
233
+ wp.pdf_from_string HTML_DOCUMENT, options
234
+ if RbConfig::CONFIG['target_os'] =~ /mswin|mingw/
235
+ assert_empty output
236
+ else
237
+ assert(output.collect { |l| !l.match(/Loading/).nil? }.include?(true)) # should output something like "Loading pages (1/5)"
238
+ end
239
+ end
221
240
  end
@@ -0,0 +1,50 @@
1
+
2
+
3
+ class WkhtmltopdfLocationTest < ActiveSupport::TestCase
4
+ setup do
5
+ @saved_config = WickedPdf.config
6
+ WickedPdf.config = {}
7
+ end
8
+
9
+ teardown do
10
+ WickedPdf.config = @saved_config
11
+ end
12
+
13
+ test 'should correctly locate wkhtmltopdf without bundler' do
14
+ bundler_module = Bundler
15
+ Object.send(:remove_const, :Bundler)
16
+
17
+ assert_nothing_raised do
18
+ WickedPdf.new
19
+ end
20
+
21
+ Object.const_set(:Bundler, bundler_module)
22
+ end
23
+
24
+ test 'should correctly locate wkhtmltopdf with bundler' do
25
+ assert_nothing_raised do
26
+ WickedPdf.new
27
+ end
28
+ end
29
+
30
+ class LocationNonWritableTest < ActiveSupport::TestCase
31
+ setup do
32
+ @saved_config = WickedPdf.config
33
+ WickedPdf.config = {}
34
+
35
+ @old_home = ENV['HOME']
36
+ ENV['HOME'] = '/not/a/writable/directory'
37
+ end
38
+
39
+ teardown do
40
+ WickedPdf.config = @saved_config
41
+ ENV['HOME'] = @old_home
42
+ end
43
+
44
+ test 'should correctly locate wkhtmltopdf with bundler while HOME is set to a non-writable directory' do
45
+ assert_nothing_raised do
46
+ WickedPdf.new
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'wicked_pdf/version'
@@ -7,28 +7,36 @@ require 'English'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'wicked_pdf'
9
9
  spec.version = WickedPdf::VERSION
10
- spec.authors = ['Miles Z. Sterrett']
11
- spec.email = 'miles.sterrett@gmail.com'
10
+ spec.authors = ['Miles Z. Sterrett', 'David Jones']
11
+ spec.email = ['miles.sterrett@gmail.com', 'unixmonkey1@gmail.com']
12
12
  spec.summary = 'PDF generator (from HTML) gem for Ruby on Rails'
13
13
  spec.homepage = 'https://github.com/mileszs/wicked_pdf'
14
14
  spec.license = 'MIT'
15
15
  spec.date = Time.now.strftime('%Y-%m-%d')
16
- spec.description = <<desc
17
- Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
18
- In other words, rather than dealing with a PDF generation DSL of some sort,
19
- you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
20
- desc
16
+ spec.description = <<DESC.gsub(/^\s+/, '')
17
+ Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
18
+ In other words, rather than dealing with a PDF generation DSL of some sort,
19
+ you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
20
+ DESC
21
+ spec.metadata = {
22
+ 'changelog_uri' => 'https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md'
23
+ }
21
24
 
25
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.2')
22
26
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
23
27
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
28
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
29
  spec.require_paths = ['lib']
26
30
 
31
+ spec.requirements << 'wkhtmltopdf'
32
+
33
+ spec.add_dependency 'activesupport'
34
+
27
35
  spec.add_development_dependency 'rails'
28
- spec.add_development_dependency 'bundler', '~> 1.3'
36
+ spec.add_development_dependency 'bundler'
29
37
  spec.add_development_dependency 'rake'
30
- spec.add_development_dependency 'rubocop' if RUBY_VERSION >= '2.0.0'
31
- spec.add_development_dependency 'sqlite3'
32
- spec.add_development_dependency 'mocha'
38
+ spec.add_development_dependency 'rubocop', '~> 0.68.0'
39
+ spec.add_development_dependency 'sqlite3', '~> 1.3'
40
+ spec.add_development_dependency 'mocha', '= 1.3'
33
41
  spec.add_development_dependency 'test-unit'
34
42
  end
metadata CHANGED
@@ -1,15 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Z. Sterrett
8
+ - David Jones
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-08-30 00:00:00.000000000 Z
12
+ date: 2020-06-14 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: rails
15
30
  requirement: !ruby/object:Gem::Requirement
@@ -28,16 +43,16 @@ dependencies:
28
43
  name: bundler
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
- - - "~>"
46
+ - - ">="
32
47
  - !ruby/object:Gem::Version
33
- version: '1.3'
48
+ version: '0'
34
49
  type: :development
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
- - - "~>"
53
+ - - ">="
39
54
  - !ruby/object:Gem::Version
40
- version: '1.3'
55
+ version: '0'
41
56
  - !ruby/object:Gem::Dependency
42
57
  name: rake
43
58
  requirement: !ruby/object:Gem::Requirement
@@ -56,44 +71,44 @@ dependencies:
56
71
  name: rubocop
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - ">="
74
+ - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
76
+ version: 0.68.0
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - ">="
81
+ - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '0'
83
+ version: 0.68.0
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: sqlite3
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
- - - ">="
88
+ - - "~>"
74
89
  - !ruby/object:Gem::Version
75
- version: '0'
90
+ version: '1.3'
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
- - - ">="
95
+ - - "~>"
81
96
  - !ruby/object:Gem::Version
82
- version: '0'
97
+ version: '1.3'
83
98
  - !ruby/object:Gem::Dependency
84
99
  name: mocha
85
100
  requirement: !ruby/object:Gem::Requirement
86
101
  requirements:
87
- - - ">="
102
+ - - '='
88
103
  - !ruby/object:Gem::Version
89
- version: '0'
104
+ version: '1.3'
90
105
  type: :development
91
106
  prerelease: false
92
107
  version_requirements: !ruby/object:Gem::Requirement
93
108
  requirements:
94
- - - ">="
109
+ - - '='
95
110
  - !ruby/object:Gem::Version
96
- version: '0'
111
+ version: '1.3'
97
112
  - !ruby/object:Gem::Dependency
98
113
  name: test-unit
99
114
  requirement: !ruby/object:Gem::Requirement
@@ -112,11 +127,14 @@ description: |
112
127
  Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
113
128
  In other words, rather than dealing with a PDF generation DSL of some sort,
114
129
  you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
115
- email: miles.sterrett@gmail.com
130
+ email:
131
+ - miles.sterrett@gmail.com
132
+ - unixmonkey1@gmail.com
116
133
  executables: []
117
134
  extensions: []
118
135
  extra_rdoc_files: []
119
136
  files:
137
+ - ".github/issue_template.md"
120
138
  - ".gitignore"
121
139
  - ".rubocop.yml"
122
140
  - ".rubocop_todo.yml"
@@ -126,14 +144,13 @@ files:
126
144
  - LICENSE.txt
127
145
  - README.md
128
146
  - Rakefile
129
- - gemfiles/2.3.gemfile
130
- - gemfiles/3.0.gemfile
131
- - gemfiles/3.1.gemfile
132
- - gemfiles/3.2.gemfile
133
147
  - gemfiles/4.0.gemfile
134
148
  - gemfiles/4.1.gemfile
135
149
  - gemfiles/4.2.gemfile
136
150
  - gemfiles/5.0.gemfile
151
+ - gemfiles/5.1.gemfile
152
+ - gemfiles/5.2.gemfile
153
+ - gemfiles/6.0.gemfile
137
154
  - gemfiles/rails_edge.gemfile
138
155
  - generators/wicked_pdf/templates/wicked_pdf.rb
139
156
  - generators/wicked_pdf/wicked_pdf_generator.rb
@@ -142,12 +159,15 @@ files:
142
159
  - lib/wicked_pdf.rb
143
160
  - lib/wicked_pdf/middleware.rb
144
161
  - lib/wicked_pdf/pdf_helper.rb
162
+ - lib/wicked_pdf/progress.rb
145
163
  - lib/wicked_pdf/railtie.rb
146
164
  - lib/wicked_pdf/tempfile.rb
147
165
  - lib/wicked_pdf/version.rb
148
166
  - lib/wicked_pdf/wicked_pdf_helper.rb
149
167
  - lib/wicked_pdf/wicked_pdf_helper/assets.rb
168
+ - test/fixtures/database.yml
150
169
  - test/fixtures/document_with_long_line.html
170
+ - test/fixtures/manifest.js
151
171
  - test/fixtures/wicked.css
152
172
  - test/fixtures/wicked.js
153
173
  - test/functional/pdf_helper_test.rb
@@ -155,11 +175,13 @@ files:
155
175
  - test/functional/wicked_pdf_helper_test.rb
156
176
  - test/test_helper.rb
157
177
  - test/unit/wicked_pdf_test.rb
178
+ - test/unit/wkhtmltopdf_location_test.rb
158
179
  - wicked_pdf.gemspec
159
180
  homepage: https://github.com/mileszs/wicked_pdf
160
181
  licenses:
161
182
  - MIT
162
- metadata: {}
183
+ metadata:
184
+ changelog_uri: https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md
163
185
  post_install_message:
164
186
  rdoc_options: []
165
187
  require_paths:
@@ -168,20 +190,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
190
  requirements:
169
191
  - - ">="
170
192
  - !ruby/object:Gem::Version
171
- version: '0'
193
+ version: '2.2'
172
194
  required_rubygems_version: !ruby/object:Gem::Requirement
173
195
  requirements:
174
196
  - - ">="
175
197
  - !ruby/object:Gem::Version
176
198
  version: '0'
177
- requirements: []
178
- rubyforge_project:
179
- rubygems_version: 2.5.1
199
+ requirements:
200
+ - wkhtmltopdf
201
+ rubygems_version: 3.0.3
180
202
  signing_key:
181
203
  specification_version: 4
182
204
  summary: PDF generator (from HTML) gem for Ruby on Rails
183
205
  test_files:
206
+ - test/fixtures/database.yml
184
207
  - test/fixtures/document_with_long_line.html
208
+ - test/fixtures/manifest.js
185
209
  - test/fixtures/wicked.css
186
210
  - test/fixtures/wicked.js
187
211
  - test/functional/pdf_helper_test.rb
@@ -189,3 +213,4 @@ test_files:
189
213
  - test/functional/wicked_pdf_helper_test.rb
190
214
  - test/test_helper.rb
191
215
  - test/unit/wicked_pdf_test.rb
216
+ - test/unit/wkhtmltopdf_location_test.rb
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 2.3.0'
5
- gem 'rake', '~> 0.9.2'
6
- gem 'ruby-prof', '~> 0.11.3'
7
- gem 'test-unit', '= 2.5.2'
8
- gem 'mocha', '~> 0.12.8'
9
-
10
- gemspec :path => '../'
@@ -1,12 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.0.0'
5
- gem 'sqlite3'
6
-
7
- if RUBY_VERSION < '1.9.3'
8
- gem 'rake', '~> 10.5'
9
- gem 'rack-cache', '~> 1.2.0'
10
- end
11
-
12
- gemspec :path => '../'
@@ -1,13 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.1.0'
5
- gem 'sqlite3'
6
- gem 'i18n', '~> 0.6.0'
7
-
8
- if RUBY_VERSION < '1.9.3'
9
- gem 'rake', '~> 10.5'
10
- gem 'rack-cache', '~> 1.2.0'
11
- end
12
-
13
- gemspec path: '../'
@@ -1,12 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.2.0'
5
- gem 'i18n', '~> 0.6.0'
6
-
7
- if RUBY_VERSION < '1.9.3'
8
- gem 'rake', '~> 10.5'
9
- gem 'rack-cache', '~> 1.2.0'
10
- end
11
-
12
- gemspec path: '../'