debug_exceptions_json 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 53f0ebdbedd5c3ee80a903af2a71b60475422b93
4
- data.tar.gz: 3988df8ba2260dcb24d57d34357ecfa6b128d569
3
+ metadata.gz: 2a80d5c215ac22aaa68b3deffb3aaad771ce24ad
4
+ data.tar.gz: 00da8f07476df8a9bad7abd8f8538b7e36ea2a5f
5
5
  SHA512:
6
- metadata.gz: 250c3b65fb2a4e7a06d66ec244f12d39c6f5ab27ec5a23017f4b4ae2a3c5826e6816472ac7657e46bd81b4905a322e317a4c13176d6d60904c30b4a1ce464398
7
- data.tar.gz: 39f407dc79c37ae4b9d99c0320dbd5ceb2c8dbfeb7a95e22eea6af6e6d984f615f32b7055a90ffb275c0c3ea870dd3e3722f61938f89fafc78ed9ba21148e2b6
6
+ metadata.gz: 87843ac9e42b2087744fc258151f0cb77a999d3212a02a8413fbbb7d79bb6a678457ccffb6447a12d449a1c4a01cee4e9780dc9db127c389889bbced06b23884
7
+ data.tar.gz: 2be167e9d5f129384081bb2e02f7548b0ae5ac683cd0f877827d880d678f796857b9c5f20818edd57745c840e58dce5ee6c650c4342389bd755657f89441664c
@@ -0,0 +1,81 @@
1
+ require 'rspec'
2
+
3
+ class DebugExceptionsJson
4
+ module Rspec
5
+ module Matchers
6
+ # TODO: Accept symbol version
7
+ def have_status_code(expected_code)
8
+ StatusCodeMatcher.new(expected_code)
9
+ end
10
+
11
+ class StatusCodeMatcher
12
+ def initialize(expected_code)
13
+ @expected = expected_code
14
+ end
15
+
16
+ def failure_message
17
+ message = "expected the response to have status code #{@expected} but it was #{@actual}."
18
+
19
+ if dump_exception?(@response)
20
+ [message, dumped_exception].join("\n\n")
21
+ else
22
+ message
23
+ end
24
+ end
25
+ alias :failure_message_for_should :failure_message
26
+
27
+ def failure_message_when_negated
28
+ message = "expected the response not to have status code #{@expected} but it did"
29
+
30
+ if dump_exception?(@response)
31
+ [message, dumped_exception].join("\n\n")
32
+ else
33
+ message
34
+ end
35
+ end
36
+ alias :failure_message_for_should_not :failure_message_when_negated
37
+
38
+ def description
39
+ "respond with numeric status code #{@expected}"
40
+ end
41
+
42
+ # response - A Rack::Response
43
+ def matches?(response)
44
+ @response = response
45
+ @actual = response.status
46
+ @actual == @expected
47
+ end
48
+
49
+ private
50
+
51
+ # Set `@body` in default_error_response?
52
+ def dump_exception?(response)
53
+ response.server_error? && response.content_type.json? && default_error_response?(response)
54
+ end
55
+
56
+ def default_error_response?(response)
57
+ @body = JSON.parse(response.body)
58
+ @body.has_key?('error') &&
59
+ @body['error'].has_key?('message') &&
60
+ @body['error'].has_key?('backtrace')
61
+ rescue JSON::ParserError
62
+ false
63
+ end
64
+
65
+ def dumped_exception
66
+ error = @body['error']
67
+
68
+ <<-EOM
69
+ ServerError:
70
+ exception class:
71
+ #{error['exception_class']}
72
+ message:
73
+ #{error['message']}
74
+ short_backtrace:
75
+ #{error['backtrace'][0..10].join("\n ")}
76
+ EOM
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -1,3 +1,3 @@
1
1
  class DebugExceptionsJson
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -6,6 +6,7 @@ class DebugExceptionsJson
6
6
  [
7
7
  {
8
8
  error: {
9
+ exception_class: exception.class.name,
9
10
  message: exception.message,
10
11
  backtrace: exception.backtrace,
11
12
  },
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug_exceptions_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taiki Ono
@@ -105,6 +105,7 @@ files:
105
105
  - MIT-LICENSE
106
106
  - Rakefile
107
107
  - lib/debug_exceptions_json.rb
108
+ - lib/debug_exceptions_json/rspec/matchers.rb
108
109
  - lib/debug_exceptions_json/version.rb
109
110
  homepage: https://github.com/taiki45/debug_exceptions_json
110
111
  licenses: