rails-response-dumper 2.1.0 → 3.0.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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rails-response-dumper +5 -118
  3. metadata +21 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d60e4df92e8fd8339624f1fa9244ace8b901368b64278579027bf9d824d4185
4
- data.tar.gz: 796e5b8b849ea40a02657078a7d324c2846fabdc29c31bf36fee50a362d48395
3
+ metadata.gz: e614c816d07245148905af373aea3ffcd3eb0ea4f36b2ae3c045833cca28b25f
4
+ data.tar.gz: b1443b1b9222b316137dc5f38318a8f67b9e4788dff16d4b6bc5149521746e60
5
5
  SHA512:
6
- metadata.gz: 12ed413c69767aa0936b88f7e526c2ec419cdc435707390272a370c5f41c3dcbcaa845685c039b8dbe148110044d7aedb9e19916658aab59c2ffb365ec9024f5
7
- data.tar.gz: 8afe7bd7ba82df75de81a97576bdebb967fc116c42ddd37c36965d9ad027ac03b998b95994d9483c2a383ba76d96986ab2dffb68ee28ea6b6a970aae460a9650
6
+ metadata.gz: 9bedc8a4c060064f0f4c9c5687312e19cb8d52ec4c47332a643371d8baefd047bc02a0878e54d5423e48b5e7fecfa3312d4689643bea5740944d9589cf86a534
7
+ data.tar.gz: 5dc5f5ee9d8247c84a7278497f53ffe3e54e40de9b2edf36f620a6623b1d8b5f42301d5d6afaee3c44cb925376a9ddae3a82dc94fc360141d4fe65fe043b5714
@@ -1,125 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'fileutils'
5
- require 'mime/types'
6
- require 'rspec/mocks'
7
-
8
4
  ENV['RAILS_ENV'] ||= 'test'
9
- require "#{Dir.pwd}/config/environment"
10
-
11
- class ResponseDumper
12
- include ActionDispatch::Integration::Runner
13
- include RSpec::Mocks::ExampleMethods
14
-
15
- attr_reader :expected_status_code
16
-
17
- def self.inherited(subclass)
18
- super
19
- dumpers << subclass
20
- end
21
-
22
- def self.dumpers
23
- @dumpers ||= []
24
- end
25
-
26
- def self.reset_models(*models)
27
- @reset_models ||= []
28
- @reset_models += models
29
- end
30
-
31
- def self.reset_models!
32
- reset_models.each do |model|
33
- model.connection.exec_query "TRUNCATE #{model.quoted_table_name} RESTART IDENTITY CASCADE"
34
- end
35
- end
36
-
37
- # Delegates to `Rails.application`.
38
- def app
39
- Rails.application
40
- end
41
-
42
- def expect_status_code!(status_code)
43
- @expected_status_code = Rack::Utils::SYMBOL_TO_STATUS_CODE[status_code]
44
- end
45
-
46
- def responses
47
- @responses ||= []
48
- end
49
-
50
- def mock_setup
51
- RSpec::Mocks.setup
52
- end
53
-
54
- def mock_teardown
55
- RSpec::Mocks.verify
56
- ensure
57
- RSpec::Mocks.teardown
58
- end
59
-
60
- [:get, :post, :patch, :put, :head, :delete].each do |method|
61
- module_eval <<~RUBY, __FILE__, __LINE__ + 1
62
- def #{method}(...)
63
- result = super
64
- self.responses << response
65
- result
66
- end
67
- RUBY
68
- end
69
-
70
- # The list of methods is too long to be useful so shorten to just the class
71
- # name.
72
- def inspect
73
- "#<#{self.class.name}>"
74
- end
75
- end
76
-
77
- def run_dumps
78
- dumps_dir = Rails.root.join('dumps')
79
- FileUtils.rm_rf dumps_dir
80
- FileUtils.mkdir_p dumps_dir
81
-
82
- Dir[Rails.root.join('dumpers/**/*.rb')].each { |f| require f }
83
-
84
- ResponseDumper.dumpers.each do |klass|
85
- klass.instance_methods.each do |method|
86
- next unless method.start_with?('dump_')
87
-
88
- klass.reset_models!
89
-
90
- dumper = klass.new
91
- dumper.mock_setup
92
- begin
93
- ActiveRecord::Base.transaction do
94
- dumper.expect_status_code!(:ok)
95
- dumper.send(method)
96
- raise ActiveRecord::Rollback
97
- end
98
- ensure
99
- dumper.mock_teardown
100
- end
101
-
102
- klass_path = klass.name.underscore
103
- dumper_dir = "#{dumps_dir}/#{klass_path}/#{method}"
104
- FileUtils.mkdir_p dumper_dir
105
-
106
- dumper.responses.each_with_index do |response, index|
107
- unless response.status == dumper.expected_status_code
108
- raise <<~ERROR.squish
109
- Dumped response has unexpected status code #{response.status} #{response.status_message}
110
- (expected #{dumper.expected_status_code})
111
- ERROR
112
- end
113
-
114
- mime = response.content_type.split(/ *; */).first
115
- extension = MIME::Types[mime].first.preferred_extension
116
- File.write("#{dumper_dir}/#{index}.#{extension}", response.body)
117
- end
118
- end
119
- end
120
- end
5
+ require 'rails_response_dumper'
121
6
 
122
7
  # Prevent database truncation if the environment is production.
123
8
  abort 'The Rails environment is running in production mode!' if Rails.env.production?
124
- ActiveRecord::Migration.maintain_test_schema!
125
- run_dumps
9
+ ActiveRecord::Migration.maintain_test_schema! if defined?(ActiveRecord::Base)
10
+
11
+ runner = RailsResponseDumper::Runner.new
12
+ runner.run_dumps
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-response-dumper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pioneer Valley Books
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-03 00:00:00.000000000 Z
11
+ date: 2022-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mime-types
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rails
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -34,16 +48,16 @@ dependencies:
34
48
  name: rspec-mocks
35
49
  requirement: !ruby/object:Gem::Requirement
36
50
  requirements:
37
- - - ">="
51
+ - - "~>"
38
52
  - !ruby/object:Gem::Version
39
- version: '0'
53
+ version: '3.0'
40
54
  type: :runtime
41
55
  prerelease: false
42
56
  version_requirements: !ruby/object:Gem::Requirement
43
57
  requirements:
44
- - - ">="
58
+ - - "~>"
45
59
  - !ruby/object:Gem::Version
46
- version: '0'
60
+ version: '3.0'
47
61
  description: |
48
62
  Rails Response Dumper is a library and command line tool to dump HTTP
49
63
  responses from a Rails application to the file system. These responses can
@@ -75,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
89
  - !ruby/object:Gem::Version
76
90
  version: '0'
77
91
  requirements: []
78
- rubygems_version: 3.3.3
92
+ rubygems_version: 3.3.7
79
93
  signing_key:
80
94
  specification_version: 4
81
95
  summary: Dump HTTP responses from a Rails application to the file system