rails-response-dumper 4.1.0 → 5.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: b36497e5dbc803078e07b1303d4df1ec11d23deb80881a3ab9ec76fe4ed532bf
4
- data.tar.gz: 93643ba27e9f5c10d41595466d1864a194fb9409dd55f046bb9b01fdc1c327fb
3
+ metadata.gz: 7d5d4bb6a00afe75289a4dfe382c2c5c53bc822c5e1a255941d8b41e49a343ac
4
+ data.tar.gz: 3e7f9b81d45db0273a373a16268e4839d9f2bf14692bf4abc4fd1d2a18226654
5
5
  SHA512:
6
- metadata.gz: c2ecfb86d177c8564eaec6f131397fd3ec3724895b1eb689e0a526b532055e638f36d908942b424efe727bb0646327be7948a064c5305121de7bd27bd6f0d652
7
- data.tar.gz: 43aae543d827a60d995f5ff28db8308ed511b0d2f3a099d9694a7bbb4f5e21652a000bef0b753b10677c0f24518f62c4358f8e1e20d38ffffbc7cdf271a03cf1
6
+ metadata.gz: 8060df3b6dfe5ac8969dc8fd6e528e3af142a6e809500df39073aa74e61e8e9a78de98253c17e3f7ccdad6dfa68407dd5d38994fe41fc5b948c6c875776a47e4
7
+ data.tar.gz: 07bfb42c2b1d4fb680a035792d4a29bf7bd376fb2901787c7ec4c6f995d90ef746f29fa9c3a2b78e4bcea2a580f4809a95a839816040e818618d86381b7410a9
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsResponseDumper
4
+ COLORS = {
5
+ cyan: 36,
6
+ green: 32,
7
+ red: 31
8
+ }.freeze
9
+
10
+ COLORIZE = $stdout.tty?
11
+
12
+ def self.print_color(text, color)
13
+ if COLORIZE
14
+ print colorize(text, color)
15
+ else
16
+ print text
17
+ end
18
+ end
19
+
20
+ def self.colorize(text, color)
21
+ "\e[#{COLORS[color]}m#{text}\e[0m"
22
+ end
23
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mime/types'
4
3
  require_relative 'defined'
4
+ require_relative 'colorize'
5
5
 
6
6
  module RailsResponseDumper
7
7
  class Runner
@@ -12,10 +12,11 @@ module RailsResponseDumper
12
12
 
13
13
  Dir[Rails.root.join('dumpers/**/*.rb')].each { |f| require f }
14
14
 
15
+ errors = []
16
+
15
17
  RailsResponseDumper::Defined.dumpers.each do |defined|
16
18
  defined.blocks.each do |dump_block|
17
19
  defined.reset_models!
18
-
19
20
  dumper = defined.klass.new
20
21
  dumper.mock_setup
21
22
  begin
@@ -33,7 +34,6 @@ module RailsResponseDumper
33
34
 
34
35
  unless dumper.responses.count == dump_block.expected_status_codes.count
35
36
  raise <<~ERROR.squish
36
- #{defined.name}.#{dump_block.name} received
37
37
  #{dumper.responses.count} responses
38
38
  (expected #{dump_block.expected_status_codes.count})
39
39
  ERROR
@@ -46,22 +46,53 @@ module RailsResponseDumper
46
46
  dumper.responses.each_with_index do |response, index|
47
47
  unless response.status == dump_block.expected_status_codes[index]
48
48
  raise <<~ERROR.squish
49
- #{defined.name}.#{dump_block.name} has unexpected status
50
- code #{response.status} #{response.status_message}
49
+ unexpected status code #{response.status} #{response.status_message}
51
50
  (expected #{dump_block.expected_status_codes[index]})
52
51
  ERROR
53
52
  end
54
53
 
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)
54
+ request = response.request
55
+ dump = {
56
+ request: {
57
+ method: request.method,
58
+ url: request.url,
59
+ body: request.body.string
60
+ },
61
+ response: {
62
+ status: response.status,
63
+ status_text: response.status_message,
64
+ headers: response.headers,
65
+ body: response.body
66
+ }
67
+ }
68
+ File.write("#{dumper_dir}/#{index}.json", JSON.pretty_generate(dump))
62
69
  end
70
+
71
+ RailsResponseDumper.print_color('.', :green)
72
+ rescue StandardError => e
73
+ errors << {
74
+ dumper_location: dump_block.block.source_location.join(':'),
75
+ name: "#{defined.name}.#{dump_block.name}",
76
+ message: e.exception.message,
77
+ backtrace: e.cause&.backtrace || e.exception.backtrace
78
+ }
79
+
80
+ RailsResponseDumper.print_color('F', :red)
63
81
  end
64
82
  end
83
+
84
+ puts
85
+ return if errors.blank?
86
+
87
+ errors.each do |error|
88
+ RailsResponseDumper.print_color(
89
+ "#{error[:dumper_location]} #{error[:name]} received #{error[:message]}\n",
90
+ :red
91
+ )
92
+ RailsResponseDumper.print_color("#{error[:backtrace][0]}\n\n", :cyan)
93
+ end
94
+
95
+ exit(false)
65
96
  end
66
97
 
67
98
  private
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-response-dumper
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.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-10-18 00:00:00.000000000 Z
11
+ date: 2022-12-12 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'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rails
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +56,7 @@ extra_rdoc_files: []
70
56
  files:
71
57
  - bin/rails-response-dumper
72
58
  - lib/rails_response_dumper.rb
59
+ - lib/rails_response_dumper/colorize.rb
73
60
  - lib/rails_response_dumper/defined.rb
74
61
  - lib/rails_response_dumper/dump_block.rb
75
62
  - lib/rails_response_dumper/runner.rb