rails-response-dumper 3.0.1 → 4.1.0

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