rails-response-dumper 3.0.1 → 4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33844c7b9a9480388327762b8a297daab7e464c47933b8559325283aa29fc5b3
4
- data.tar.gz: 6b8984033d0040101a4577e9a8c9aedfb3bba372510c03655ddbc402eb07e016
3
+ metadata.gz: b36497e5dbc803078e07b1303d4df1ec11d23deb80881a3ab9ec76fe4ed532bf
4
+ data.tar.gz: 93643ba27e9f5c10d41595466d1864a194fb9409dd55f046bb9b01fdc1c327fb
5
5
  SHA512:
6
- metadata.gz: 4c4aa80837f7f3ec7d70b5e245692e50ac8d612499deba1d269dc54800bae589aa9143ee33ad2f665b6a647b1a741bb77ffb83acc9aa1b12169150fcd543a796
7
- data.tar.gz: 033d6714b3e5febebbf5aa063e7a538bda9ae101a4cbef7b196a446c567c5f4b4341bd6dca328f2ba084e8e3a378462b9c8caa909b111545e165de656db703fc
6
+ metadata.gz: c2ecfb86d177c8564eaec6f131397fd3ec3724895b1eb689e0a526b532055e638f36d908942b424efe727bb0646327be7948a064c5305121de7bd27bd6f0d652
7
+ data.tar.gz: 43aae543d827a60d995f5ff28db8308ed511b0d2f3a099d9694a7bbb4f5e21652a000bef0b753b10677c0f24518f62c4358f8e1e20d38ffffbc7cdf271a03cf1
@@ -6,6 +6,7 @@ require_relative 'dump_block'
6
6
  module RailsResponseDumper
7
7
  class Defined
8
8
  attr_accessor :name, :klass
9
+ attr_reader :before_block, :after_block
9
10
 
10
11
  delegate :include, to: :klass
11
12
 
@@ -22,8 +23,20 @@ module RailsResponseDumper
22
23
  self.class.dumpers << self
23
24
  end
24
25
 
25
- def dump(name, status_code: :ok, &block)
26
- blocks << DumpBlock.new(name, Rack::Utils::SYMBOL_TO_STATUS_CODE[status_code], block)
26
+ def dump(name, status_codes: [:ok], &block)
27
+ blocks << DumpBlock.new(
28
+ name,
29
+ status_codes.map { |status_code| Rack::Utils::SYMBOL_TO_STATUS_CODE[status_code] },
30
+ block
31
+ )
32
+ end
33
+
34
+ def before(&block)
35
+ @before_block = block
36
+ end
37
+
38
+ def after(&block)
39
+ @after_block = block
27
40
  end
28
41
 
29
42
  def blocks
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsResponseDumper
4
- DumpBlock = Struct.new('DumpBlock', :name, :expected_status_code, :block)
4
+ DumpBlock = Struct.new('DumpBlock', :name, :expected_status_codes, :block)
5
5
  end
@@ -20,28 +20,45 @@ module RailsResponseDumper
20
20
  dumper.mock_setup
21
21
  begin
22
22
  rollback_after do
23
- dumper.instance_eval(&dump_block.block)
23
+ dumper.instance_eval(&defined.before_block) if defined.before_block
24
+ begin
25
+ dumper.instance_eval(&dump_block.block)
26
+ ensure
27
+ dumper.instance_eval(&defined.after_block) if defined.after_block
28
+ end
24
29
  end
25
30
  ensure
26
31
  dumper.mock_teardown
27
32
  end
28
33
 
34
+ unless dumper.responses.count == dump_block.expected_status_codes.count
35
+ raise <<~ERROR.squish
36
+ #{defined.name}.#{dump_block.name} received
37
+ #{dumper.responses.count} responses
38
+ (expected #{dump_block.expected_status_codes.count})
39
+ ERROR
40
+ end
41
+
29
42
  klass_path = defined.name.underscore
30
43
  dumper_dir = "#{dumps_dir}/#{klass_path}/#{dump_block.name}"
31
44
  FileUtils.mkdir_p dumper_dir
32
45
 
33
46
  dumper.responses.each_with_index do |response, index|
34
- unless response.status == dump_block.expected_status_code
47
+ unless response.status == dump_block.expected_status_codes[index]
35
48
  raise <<~ERROR.squish
36
49
  #{defined.name}.#{dump_block.name} has unexpected status
37
50
  code #{response.status} #{response.status_message}
38
- (expected #{dump_block.expected_status_code})
51
+ (expected #{dump_block.expected_status_codes[index]})
39
52
  ERROR
40
53
  end
41
54
 
42
- mime = response.content_type.split(/ *; */).first
43
- extension = MIME::Types[mime].first.preferred_extension
44
- File.write("#{dumper_dir}/#{index}.#{extension}", response.body)
55
+ if response.content_type
56
+ mime = response.content_type.split(/ *; */).first
57
+ extension = ".#{MIME::Types[mime].first.preferred_extension}"
58
+ else
59
+ extension = ''
60
+ end
61
+ File.write("#{dumper_dir}/#{index}#{extension}", response.body)
45
62
  end
46
63
  end
47
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-response-dumper
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 4.1.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-29 00:00:00.000000000 Z
11
+ date: 2022-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types