bidi2pdf-rails 0.0.1.alpha.1 → 0.1.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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/bidi2pdf-rails.iml +16 -8
  3. data/.rubocop.yml +11 -0
  4. data/CHANGELOG.md +33 -0
  5. data/README.md +104 -41
  6. data/Rakefile +2 -0
  7. data/cliff.toml +126 -0
  8. data/lib/bidi2pdf_rails/browser_console_log_subscriber.rb +1 -1
  9. data/lib/bidi2pdf_rails/chromedriver_manager_singleton.rb +10 -10
  10. data/lib/bidi2pdf_rails/config.rb +133 -0
  11. data/lib/bidi2pdf_rails/configurable.rb +106 -0
  12. data/lib/bidi2pdf_rails/main_log_subscriber.rb +1 -1
  13. data/lib/bidi2pdf_rails/network_log_subscriber.rb +1 -1
  14. data/lib/bidi2pdf_rails/railtie.rb +2 -0
  15. data/lib/bidi2pdf_rails/services/pdf_renderer.rb +9 -8
  16. data/lib/bidi2pdf_rails/version.rb +1 -1
  17. data/lib/bidi2pdf_rails.rb +28 -99
  18. data/lib/generators/bidi2pdf_rails/USAGE +12 -4
  19. data/lib/generators/bidi2pdf_rails/initializer_generator.rb +136 -31
  20. data/lib/generators/bidi2pdf_rails/templates/bidi2pdf_rails.rb.tt +15 -101
  21. data/spec/acceptance/user_can_download_report_pdf_spec.rb +133 -0
  22. data/spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb +173 -0
  23. data/spec/dummy/app/controllers/reports_controller.rb +35 -2
  24. data/spec/dummy/app/controllers/secure_controller.rb +52 -0
  25. data/spec/dummy/app/views/layouts/simple.html.erb +17 -0
  26. data/spec/dummy/app/views/secure/show.html.erb +10 -0
  27. data/spec/dummy/config/initializers/bidi2pdf_rails.rb +64 -54
  28. data/spec/dummy/config/routes.rb +9 -1
  29. data/spec/dummy/log/development.log +3850 -0
  30. data/spec/dummy/log/test.log +53046 -0
  31. data/spec/dummy/tmp/pids/server.pid +1 -1
  32. data/spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb +64 -0
  33. data/spec/rails_helper.rb +8 -1
  34. data/spec/spec_helper.rb +47 -5
  35. data/spec/support/default_dirs_helper.rb +32 -0
  36. data/spec/support/pdf_helper.rb +12 -0
  37. data/spec/support/render_setting_helpers.rb +28 -0
  38. data/spec/support/request_server_bootstrap.rb +44 -0
  39. data/spec/{bidi2pdf_rails → unit/bidi2pdf_rails}/bidi2pdf_rails_spec.rb +1 -1
  40. data/spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb +133 -0
  41. data/tasks/changelog.rake +29 -0
  42. data/tasks/coverage.rake +23 -0
  43. metadata +69 -20
  44. data/spec/dummy/spec/helpers/reports_helper_spec.rb +0 -15
  45. data/spec/dummy/spec/requests/reports_spec.rb +0 -10
  46. data/spec/dummy/spec/views/reports/show.html.erb_spec.rb +0 -5
  47. data/spec/generator/bidie2pdf_rails_initializer_generator_spec.rb +0 -5
  48. data/spec/generator/initializer_generator_spec.rb +0 -5
  49. data/spec/requests/reports_spec.rb +0 -17
@@ -1 +1 @@
1
- 45957
1
+ 37830
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+ require "rails/generators"
5
+ require "ammeter/init"
6
+ require "generators/bidi2pdf_rails/initializer_generator"
7
+
8
+ RSpec.describe Bidi2pdfRails::InitializerGenerator, type: :generator do
9
+ destination tmp_file("generators")
10
+
11
+ before { prepare_destination }
12
+
13
+ after { FileUtils.rm_rf(destination_root) }
14
+
15
+ describe 'the generated files' do
16
+ let(:dev_env_file) { file('config/environments/development.rb') }
17
+
18
+ before do
19
+ FileUtils.mkdir_p dev_env_file.dirname
20
+
21
+ # write minimal development.rb file
22
+ File.write(dev_env_file, <<~RUBY)
23
+ Rails.application.configure do
24
+
25
+ end
26
+
27
+ RUBY
28
+
29
+ run_generator %w[
30
+ --general-verbosity medium
31
+ --proxy-addr=127.0.0.1
32
+ --proxy-port=8080
33
+ --quiet
34
+ ]
35
+ end
36
+
37
+ describe 'the initializer file' do
38
+ subject(:initializer) { file('config/initializers/bidi2pdf_rails.rb') }
39
+
40
+ it { is_expected.to be_readable }
41
+ it { is_expected.to have_correct_syntax }
42
+
43
+ Bidi2pdfRails::Config::CONFIG_OPTIONS.each_pair do |group_key, top_level_option|
44
+ name = top_level_option[:name]
45
+ it { is_expected.to contain(name) }
46
+
47
+ top_level_option[:options].each do |option|
48
+ option_accessor = "#{group_key}.#{option[:name]}".to_sym
49
+ if ["proxy_settings.port", "proxy_settings.addr", "general_options.verbosity"].include?(option_accessor.to_s)
50
+ it { is_expected.to contain("config.#{option_accessor} = ") }
51
+ else
52
+ it { is_expected.to contain("# config.#{option_accessor} = #{option[:default_as_str] ? option[:default_as_str] : option[:default].inspect}") }
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ describe 'the development environment file' do
59
+ subject(:dev_env_file) { file('config/environments/development.rb') }
60
+
61
+ it { is_expected.to contain("config.x.bidi2pdf_rails.headless = false") }
62
+ end
63
+ end
64
+ end
data/spec/rails_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
- require './spec_helper'
2
+ require 'spec_helper'
3
3
 
4
4
  ENV['RAILS_ENV'] ||= 'test'
5
5
  require_relative './dummy/config/environment'
@@ -57,4 +57,11 @@ RSpec.configure do |config|
57
57
  config.filter_rails_from_backtrace!
58
58
  # arbitrary gems may also be filtered via:
59
59
  # config.filter_gems_from_backtrace("gem name")
60
+
61
+ config.alias_example_group_to :feature, feature: true
62
+ config.alias_example_group_to :when_, feature: true
63
+ config.alias_example_group_to :given, feature: true
64
+ config.alias_example_group_to :scenario, feature: true
65
+ config.alias_example_to :then_, feature: true
66
+ config.alias_example_to :and_, feature: true
60
67
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,29 @@
1
+ require "simplecov"
2
+
3
+ if ENV["COVERAGE"]
4
+ SimpleCov.start do
5
+ command_name "Job #{ENV["GITHUB_JOB"]}" if ENV["GITHUB_JOB"]
6
+
7
+ if ENV["CI"]
8
+ formatter SimpleCov::Formatter::SimpleFormatter
9
+ else
10
+ formatter SimpleCov::Formatter::MultiFormatter.new([
11
+ SimpleCov::Formatter::SimpleFormatter,
12
+ SimpleCov::Formatter::HTMLFormatter
13
+ ])
14
+ end
15
+
16
+ add_filter "/spec/"
17
+ add_filter "/vendor/"
18
+ add_filter "/lib/bidi2pdf_rails/version.rb"
19
+ # Add any other paths you want to exclude
20
+
21
+ add_group "Lib", "lib"
22
+
23
+ track_files "lib/**/*.rb"
24
+ end
25
+ end
26
+
1
27
  # This file was generated by the `rails generate rspec:install` command. Conventionally, all
2
28
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
29
  # The generated `.rspec` file contains `--require spec_helper` which will cause
@@ -44,9 +70,6 @@ RSpec.configure do |config|
44
70
  # triggering implicit auto-inclusion in groups with matching metadata.
45
71
  config.shared_context_metadata_behavior = :apply_to_host_groups
46
72
 
47
- # The settings below are suggested to provide a good initial experience
48
- # with RSpec, but feel free to customize to your heart's content.
49
- =begin
50
73
  # This allows you to limit a spec run to individual examples or groups
51
74
  # you care about by tagging them with `:focus` metadata. When nothing
52
75
  # is tagged with `:focus`, all examples get run. RSpec also provides
@@ -57,7 +80,7 @@ RSpec.configure do |config|
57
80
  # Allows RSpec to persist some state between runs in order to support
58
81
  # the `--only-failures` and `--next-failure` CLI options. We recommend
59
82
  # you configure your source control system to ignore this file.
60
- config.example_status_persistence_file_path = "spec/examples.txt"
83
+ config.example_status_persistence_file_path = ".rspec_status"
61
84
 
62
85
  # Limits the available syntax to the non-monkey patched syntax that is
63
86
  # recommended. For more details, see:
@@ -90,5 +113,24 @@ RSpec.configure do |config|
90
113
  # test failures related to randomization by passing the same `--seed` value
91
114
  # as the one that triggered the failure.
92
115
  Kernel.srand config.seed
93
- =end
116
+
117
+ config.define_derived_metadata(file_path: %r{/spec/unit/}) do |metadata|
118
+ metadata[:unit] = true
119
+ end
120
+
121
+ config.define_derived_metadata(file_path: %r{/spec/integration/}) do |metadata|
122
+ metadata[:integration] = true
123
+ end
124
+
125
+ config.define_derived_metadata(file_path: %r{/spec/acceptance/}) do |metadata|
126
+ metadata[:acceptance] = true
127
+ end
128
+
129
+ config.add_setting :spec_dir, default: File.expand_path(__dir__)
94
130
  end
131
+
132
+ require_relative "support/default_dirs_helper" # just to ensure that the folder definitions are loaded first
133
+
134
+ Dir[File.expand_path("support/**/*.rb", __dir__)].each { |f| require f }
135
+
136
+ require "bidi2pdf/test_helpers"
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "securerandom"
4
+ module DefaultDirsHelper
5
+ def spec_dir
6
+ RSpec.configuration.spec_dir
7
+ end
8
+
9
+ def tmp_dir
10
+ RSpec.configuration.tmp_dir
11
+ end
12
+
13
+ def tmp_file(*)
14
+ File.join(tmp_dir, *)
15
+ end
16
+
17
+ def random_tmp_dir(*dirs, prefix: "tmp_")
18
+ all_dirs = [tmp_dir] + (dirs || []).compact
19
+
20
+ File.join(*all_dirs, "#{prefix}#{SecureRandom.hex(8)}")
21
+ end
22
+ end
23
+
24
+ RSpec.configure do |config|
25
+ config.add_setting :spec_dir, default: File.expand_path("..", __dir__)
26
+
27
+ config.add_setting :tmp_dir, default: File.join(config.spec_dir, "..", "tmp")
28
+ config.add_setting :docker_dir, default: File.join(config.spec_dir, "..", "docker")
29
+
30
+ config.include DefaultDirsHelper
31
+ config.extend DefaultDirsHelper
32
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PdfHelper
4
+ def get_pdf_response(path)
5
+ uri = URI("http://localhost:#{@port}#{path}")
6
+ Net::HTTP.get_response(uri)
7
+ end
8
+ end
9
+
10
+ RSpec.configure do |config|
11
+ config.include PdfHelper, pdf: true
12
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ module RenderSettingHelpers
5
+ def with_render_setting(key, value)
6
+ overridden_render_settings[key] = Bidi2pdfRails.config.render_remote_settings.public_send(key)
7
+ Bidi2pdfRails.config.render_remote_settings.public_send("#{key}=", value)
8
+ end
9
+
10
+ def overridden_render_settings
11
+ @__overridden_render_settings ||= {}
12
+ end
13
+
14
+ def reset_render_settings
15
+ overridden_render_settings.each do |key, original_value|
16
+ Bidi2pdfRails.config.render_remote_settings.public_send("#{key}=", original_value)
17
+ end
18
+ @__overridden_render_settings = {}
19
+ end
20
+ end
21
+
22
+ RSpec.configure do |config|
23
+ config.include RenderSettingHelpers, type: :request
24
+
25
+ config.after(:each, type: :request) do
26
+ reset_render_settings if defined?(reset_render_settings)
27
+ end
28
+ end
@@ -0,0 +1,44 @@
1
+ # spec/support/request_server_bootstrap.rb
2
+
3
+ module RequestServerBootstrap
4
+ def find_available_port
5
+ server = TCPServer.new('127.0.0.1', 0)
6
+ port = server.addr[1]
7
+ server.close
8
+ port
9
+ end
10
+
11
+ def wait_until_server_is_ready(port)
12
+ loop do
13
+ begin
14
+ Net::HTTP.get(URI("http://localhost:#{port}"))
15
+ break
16
+ rescue Errno::ECONNREFUSED
17
+ sleep 0.1
18
+ end
19
+ end
20
+ end
21
+
22
+ def capybara_manages_server?
23
+ defined?(Capybara) && Capybara.current_driver && Capybara.server
24
+ end
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.include RequestServerBootstrap, type: :request
29
+
30
+ config.before(:all, type: :request) do
31
+ next if capybara_manages_server?
32
+ @port = find_available_port
33
+ @server_thread = Thread.new do
34
+ Rack::Handler::Puma.run Rails.application, Port: @port, Silent: true
35
+ end
36
+
37
+ wait_until_server_is_ready(@port)
38
+ end
39
+
40
+ config.after(:all, type: :request) do
41
+ next if capybara_manages_server?
42
+ @server_thread&.exit
43
+ end
44
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../rails_helper"
3
+ require_relative "../../rails_helper"
4
4
 
5
5
  RSpec.describe Bidi2pdfRails do
6
6
  it "has a version number" do
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ RSpec.describe Bidi2pdfRails::Configurable::BaseNestedConfig do
6
+ subject(:config) { described_class.new(option_definitions) }
7
+
8
+ let(:option_definitions) { self.class.option_definitions }
9
+
10
+ def self.option_definitions
11
+ [
12
+ { name: :simple_string, default: "default_string", desc: "A simple string option" },
13
+ { name: :numeric_value, default: 42, desc: "A numeric value" },
14
+ { name: :boolean_flag, default: true, desc: "A boolean flag" },
15
+ { name: :lambda_value, default: -> { Date.today }, desc: "A dynamic value from lambda" },
16
+ { name: :hash_value, default: { key: "value" }, desc: "A hash value" }
17
+ ]
18
+ end
19
+
20
+ describe "#initialize" do
21
+ option_definitions.each do |opt|
22
+ it "creates reader methods for #{opt[:name]}" do
23
+ expect(config).to respond_to(opt[:name])
24
+ end
25
+
26
+ it "creates writer methods for #{opt[:name]}" do
27
+ expect(config).to respond_to("#{opt[:name]}=")
28
+ end
29
+
30
+ if !opt[:default].is_a?(Proc)
31
+ it "sets default values for #{opt[:name]}" do
32
+ expect(config.send(opt[:name])).to eq(opt[:default])
33
+ end
34
+ end
35
+ end
36
+
37
+ it "evaluates lambda defaults when accessed through _value methods" do
38
+ expect(config.lambda_value_value).to eq(Date.today)
39
+ end
40
+ end
41
+
42
+ describe "#reset_to_defaults!" do
43
+ before do
44
+ config.simple_string = "changed_value"
45
+ config.numeric_value = 100
46
+ config.boolean_flag = false
47
+ end
48
+
49
+ option_definitions.reject { |opt| opt[:name] == :lambda_value }.each do |opt|
50
+ it "resets #{opt[:name]} to their default" do
51
+ config.reset_to_defaults!
52
+
53
+ expect(config.send(opt[:name])).to eq(opt[:default])
54
+ end
55
+ end
56
+ end
57
+
58
+ describe "#configure" do
59
+ it "yields self to the provided block" do
60
+ yielded_object = nil
61
+
62
+ config.configure do |c|
63
+ yielded_object = c
64
+ c.simple_string = "configured_value"
65
+ end
66
+
67
+ expect(yielded_object).to eq(config)
68
+ end
69
+
70
+ it "applies the given values" do
71
+ config.configure do |c|
72
+ c.simple_string = "configured_value"
73
+ end
74
+
75
+ expect(config.simple_string).to eq("configured_value")
76
+ end
77
+ end
78
+
79
+ describe "#to_h" do
80
+ it "returns a hash containing all option values" do
81
+ result = config.to_h
82
+
83
+ expect(result).to include(
84
+ simple_string: "default_string",
85
+ numeric_value: 42,
86
+ boolean_flag: true,
87
+ lambda_value: Proc,
88
+ boolean_flag: true,
89
+ hash_value: { key: "value" }
90
+ )
91
+ end
92
+ end
93
+
94
+ describe "#_value methods" do
95
+ context "with regular values" do
96
+ option_definitions.reject { |opt| opt[:name] == :lambda_value }.each do |opt|
97
+ it "returns the value directly for #{opt[:name]}" do
98
+ expect(config.send "#{opt[:name]}_value").to eq(config.send(opt[:name]))
99
+ end
100
+
101
+ it "returns updated values for #{opt[:name]}" do
102
+ config.send "#{opt[:name]}=", "new_string"
103
+
104
+ expect(config.send(opt[:name])).to eq("new_string")
105
+ end
106
+ end
107
+ end
108
+
109
+ context "with lambda values" do
110
+ it "calls the lambda and returns its result" do
111
+ today = Date.today
112
+ expect(config.lambda_value_value).to eq(today)
113
+ end
114
+
115
+ it "returns updated values" do
116
+ config.lambda_value = -> { "computed_value" }
117
+
118
+ expect(config.lambda_value_value).to eq("computed_value")
119
+ end
120
+
121
+ it "accepts arguments for the _value methods" do
122
+ args = nil
123
+ config.lambda_value = ->(*lambda_args) { args = lambda_args }
124
+
125
+ provided_args = [1, "a", :thing]
126
+
127
+ config.lambda_value_value(*provided_args)
128
+
129
+ expect(args).to eq(provided_args)
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ def cliff_installed?
4
+ system("which git-cliff > /dev/null 2>&1")
5
+ end
6
+
7
+ namespace :changelog do
8
+ desc "Generate unreleased section in CHANGELOG.md (requires git-cliff)"
9
+ task :update_unreleased do
10
+ unless cliff_installed?
11
+ puts "🚫 git-cliff is not installed!"
12
+ puts "👉 Install it here: https://git-cliff.org/docs/installation/"
13
+ exit 1
14
+ end
15
+
16
+ generated = `git cliff --unreleased`
17
+
18
+ changelog_path = "CHANGELOG.md"
19
+ changelog = File.read(changelog_path)
20
+
21
+ updated = changelog.sub(
22
+ /<!--.*generated\s+by\s+git-cliff\s+start\s+-->(.*?)<!--\s+generated\s+by\s+git-cliff\s+end\s+-->/m,
23
+ generated.strip
24
+ )
25
+
26
+ File.write(changelog_path, updated)
27
+ puts "✅ Replaced generated section in CHANGELOG.md"
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :coverage do
4
+ desc "Merge simplecov coverage reports"
5
+ task :merge_reports do
6
+ require "simplecov"
7
+
8
+ SimpleCov.collate Dir["coverage/*-resultset.json"] do
9
+ formatter SimpleCov::Formatter::MultiFormatter.new([
10
+ SimpleCov::Formatter::SimpleFormatter,
11
+ SimpleCov::Formatter::HTMLFormatter,
12
+ SimpleCov::Formatter::JSONFormatter
13
+ ])
14
+ end
15
+ end
16
+
17
+ desc "Run tests with coverage"
18
+ task :coverage do
19
+ ENV["COVERAGE"] = "true"
20
+ Rake::Task["spec"].execute
21
+ puts "Coverage report generated in coverage/ directory"
22
+ end
23
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bidi2pdf-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.alpha.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter S.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-17 00:00:00.000000000 Z
11
+ date: 2025-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -128,9 +128,40 @@ dependencies:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
130
  version: '1.0'
131
- description: 'Bidi2pdf Rails is a powerful PDF generation tool.
132
-
133
- '
131
+ - !ruby/object:Gem::Dependency
132
+ name: pdf-reader
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '2.14'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '2.14'
145
+ - !ruby/object:Gem::Dependency
146
+ name: unicode_utils
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.4'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '1.4'
159
+ description: "Bidi2pdf Rails provides a seamless integration between Rails and the
160
+ Bidi2pdf gem for \ngenerating high-quality PDFs using Chrome/Chromium's headless
161
+ browser. It supports \nrendering PDFs from controller actions, remote URLs, or HTML
162
+ strings with configurable \noptions for orientation, margins, page size, and more.
163
+ The gem handles browser lifecycle \nmanagement and provides a clean API for PDF
164
+ generation with proper asset handling.\n"
134
165
  email:
135
166
  - 101627195+dieter-medium@users.noreply.github.com
136
167
  executables: []
@@ -147,13 +178,17 @@ files:
147
178
  - ".rubocop.yml"
148
179
  - ".ruby-gemset"
149
180
  - ".ruby-version"
181
+ - CHANGELOG.md
150
182
  - MIT-LICENSE
151
183
  - README.md
152
184
  - Rakefile
185
+ - cliff.toml
153
186
  - lib/bidi2pdf-rails.rb
154
187
  - lib/bidi2pdf_rails.rb
155
188
  - lib/bidi2pdf_rails/browser_console_log_subscriber.rb
156
189
  - lib/bidi2pdf_rails/chromedriver_manager_singleton.rb
190
+ - lib/bidi2pdf_rails/config.rb
191
+ - lib/bidi2pdf_rails/configurable.rb
157
192
  - lib/bidi2pdf_rails/main_log_subscriber.rb
158
193
  - lib/bidi2pdf_rails/network_log_subscriber.rb
159
194
  - lib/bidi2pdf_rails/railtie.rb
@@ -166,7 +201,8 @@ files:
166
201
  - lib/generators/bidi2pdf_rails/USAGE
167
202
  - lib/generators/bidi2pdf_rails/initializer_generator.rb
168
203
  - lib/generators/bidi2pdf_rails/templates/bidi2pdf_rails.rb.tt
169
- - spec/bidi2pdf_rails/bidi2pdf_rails_spec.rb
204
+ - spec/acceptance/user_can_download_report_pdf_spec.rb
205
+ - spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
170
206
  - spec/dummy/Rakefile
171
207
  - spec/dummy/app/assets/images/img.jpg
172
208
  - spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
@@ -176,13 +212,16 @@ files:
176
212
  - spec/dummy/app/assets/stylesheets/screen.css
177
213
  - spec/dummy/app/controllers/application_controller.rb
178
214
  - spec/dummy/app/controllers/reports_controller.rb
215
+ - spec/dummy/app/controllers/secure_controller.rb
179
216
  - spec/dummy/app/helpers/application_helper.rb
180
217
  - spec/dummy/app/helpers/reports_helper.rb
181
218
  - spec/dummy/app/views/layouts/application.html.erb
182
219
  - spec/dummy/app/views/layouts/pdf.html.erb
220
+ - spec/dummy/app/views/layouts/simple.html.erb
183
221
  - spec/dummy/app/views/pwa/manifest.json.erb
184
222
  - spec/dummy/app/views/pwa/service-worker.js
185
223
  - spec/dummy/app/views/reports/show.html.erb
224
+ - spec/dummy/app/views/secure/show.html.erb
186
225
  - spec/dummy/bin/rails
187
226
  - spec/dummy/bin/rake
188
227
  - spec/dummy/bin/setup
@@ -203,26 +242,30 @@ files:
203
242
  - spec/dummy/config/puma.rb
204
243
  - spec/dummy/config/routes.rb
205
244
  - spec/dummy/log/development.log
245
+ - spec/dummy/log/test.log
206
246
  - spec/dummy/public/404.html
207
247
  - spec/dummy/public/406-unsupported-browser.html
208
248
  - spec/dummy/public/422.html
209
249
  - spec/dummy/public/500.html
210
250
  - spec/dummy/public/icon.png
211
251
  - spec/dummy/public/icon.svg
212
- - spec/dummy/spec/helpers/reports_helper_spec.rb
213
- - spec/dummy/spec/requests/reports_spec.rb
214
- - spec/dummy/spec/views/reports/show.html.erb_spec.rb
215
252
  - spec/dummy/storage/test.sqlite3
216
253
  - spec/dummy/tmp/README.md
217
254
  - spec/dummy/tmp/local_secret.txt
218
255
  - spec/dummy/tmp/pids/server.pid
219
256
  - spec/dummy/tmp/restart.txt
220
- - spec/generator/bidie2pdf_rails_initializer_generator_spec.rb
221
- - spec/generator/initializer_generator_spec.rb
257
+ - spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
222
258
  - spec/rails_helper.rb
223
- - spec/requests/reports_spec.rb
224
259
  - spec/spec_helper.rb
260
+ - spec/support/default_dirs_helper.rb
261
+ - spec/support/pdf_helper.rb
262
+ - spec/support/render_setting_helpers.rb
263
+ - spec/support/request_server_bootstrap.rb
264
+ - spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
265
+ - spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb
225
266
  - tasks/bidi2pdf_rails_tasks.rake
267
+ - tasks/changelog.rake
268
+ - tasks/coverage.rake
226
269
  homepage: https://github.com/dieter-medium/bidi2pdf-rails
227
270
  licenses:
228
271
  - MIT
@@ -250,9 +293,10 @@ requirements: []
250
293
  rubygems_version: 3.5.11
251
294
  signing_key:
252
295
  specification_version: 4
253
- summary: A Ruby gem that generates PDF
296
+ summary: Rails integration for PDF generation using Chrome/Chromium headless browser
254
297
  test_files:
255
- - spec/bidi2pdf_rails/bidi2pdf_rails_spec.rb
298
+ - spec/acceptance/user_can_download_report_pdf_spec.rb
299
+ - spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
256
300
  - spec/dummy/Rakefile
257
301
  - spec/dummy/app/assets/images/img.jpg
258
302
  - spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
@@ -262,13 +306,16 @@ test_files:
262
306
  - spec/dummy/app/assets/stylesheets/screen.css
263
307
  - spec/dummy/app/controllers/application_controller.rb
264
308
  - spec/dummy/app/controllers/reports_controller.rb
309
+ - spec/dummy/app/controllers/secure_controller.rb
265
310
  - spec/dummy/app/helpers/application_helper.rb
266
311
  - spec/dummy/app/helpers/reports_helper.rb
267
312
  - spec/dummy/app/views/layouts/application.html.erb
268
313
  - spec/dummy/app/views/layouts/pdf.html.erb
314
+ - spec/dummy/app/views/layouts/simple.html.erb
269
315
  - spec/dummy/app/views/pwa/manifest.json.erb
270
316
  - spec/dummy/app/views/pwa/service-worker.js
271
317
  - spec/dummy/app/views/reports/show.html.erb
318
+ - spec/dummy/app/views/secure/show.html.erb
272
319
  - spec/dummy/bin/rails
273
320
  - spec/dummy/bin/rake
274
321
  - spec/dummy/bin/setup
@@ -289,22 +336,24 @@ test_files:
289
336
  - spec/dummy/config/routes.rb
290
337
  - spec/dummy/config.ru
291
338
  - spec/dummy/log/development.log
339
+ - spec/dummy/log/test.log
292
340
  - spec/dummy/public/404.html
293
341
  - spec/dummy/public/406-unsupported-browser.html
294
342
  - spec/dummy/public/422.html
295
343
  - spec/dummy/public/500.html
296
344
  - spec/dummy/public/icon.png
297
345
  - spec/dummy/public/icon.svg
298
- - spec/dummy/spec/helpers/reports_helper_spec.rb
299
- - spec/dummy/spec/requests/reports_spec.rb
300
- - spec/dummy/spec/views/reports/show.html.erb_spec.rb
301
346
  - spec/dummy/storage/test.sqlite3
302
347
  - spec/dummy/tmp/README.md
303
348
  - spec/dummy/tmp/local_secret.txt
304
349
  - spec/dummy/tmp/pids/server.pid
305
350
  - spec/dummy/tmp/restart.txt
306
- - spec/generator/bidie2pdf_rails_initializer_generator_spec.rb
307
- - spec/generator/initializer_generator_spec.rb
351
+ - spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
308
352
  - spec/rails_helper.rb
309
- - spec/requests/reports_spec.rb
310
353
  - spec/spec_helper.rb
354
+ - spec/support/default_dirs_helper.rb
355
+ - spec/support/pdf_helper.rb
356
+ - spec/support/render_setting_helpers.rb
357
+ - spec/support/request_server_bootstrap.rb
358
+ - spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
359
+ - spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb