rails-response-dumper 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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