json_error 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -1
- data/json_error.gemspec +1 -0
- data/lib/json_error/base.rb +12 -2
- data/lib/json_error/version.rb +1 -1
- data/spec/fixtures/json_error_base_children.rb +8 -0
- data/spec/json_error/base_children_spec.rb +56 -0
- data/spec/spec_helper.rb +3 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8d02b5a8dc09b18176bde4e04b523d218f255cf
|
4
|
+
data.tar.gz: 7bf5c086a9d80d91ceff09d6d430dbafabbe6768
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 462ecb79ea50676654177e3aef1474faf926393696cce610929ffe9ca27c3f202c700a5304733115598da6895249b75d19345640ed72540e28a7051073c6ac6c
|
7
|
+
data.tar.gz: 14cabc02842c091ec6cb8af643ec2677293a14cd42dc55d8fa3d067b2d87427b18765f873b60ca747cafd0552c1a4d601fd09b9388f1ea1fdc2ffe68548f6f1a
|
data/README.md
CHANGED
@@ -63,7 +63,15 @@ Error.new(key: :error)
|
|
63
63
|
```
|
64
64
|
however, json errors must have a key. Key is not inherited.
|
65
65
|
|
66
|
-
*Default properties* are properties included to JSON output by default (:key, status: 500).
|
66
|
+
*Default properties* are properties included to JSON output by default (:key, status: 500).
|
67
|
+
- You can alias key property like in example below:
|
68
|
+
```ruby
|
69
|
+
class SomeError < JSONError.base
|
70
|
+
# There will be "error_code" within .to_json output instead of "key"
|
71
|
+
key :error, as: :error_code
|
72
|
+
end
|
73
|
+
```
|
74
|
+
- You can change status in locale.
|
67
75
|
|
68
76
|
*Translated properties* are error attributes which values will be loaded from locale. Translated properties can be inherited.
|
69
77
|
|
data/json_error.gemspec
CHANGED
data/lib/json_error/base.rb
CHANGED
@@ -6,9 +6,12 @@ module JSONError
|
|
6
6
|
attr_reader :context, :key, :options
|
7
7
|
|
8
8
|
class << self
|
9
|
+
attr_reader :key_alias
|
10
|
+
|
9
11
|
def inherited(base)
|
10
12
|
base.instance_variable_set(:@translated_properties, translated_properties)
|
11
13
|
base.instance_variable_set(:@custom_properties, custom_properties)
|
14
|
+
base.instance_variable_set(:@key_alias, key_alias)
|
12
15
|
end
|
13
16
|
|
14
17
|
def base?
|
@@ -19,10 +22,11 @@ module JSONError
|
|
19
22
|
raise(Errors::DisallowedPropertySetting, property: property, class: self)
|
20
23
|
end
|
21
24
|
|
22
|
-
def key(key = nil)
|
25
|
+
def key(key = nil, options = {})
|
23
26
|
return @key if key.nil?
|
24
27
|
disallowed_property_setting!(:key) if base?
|
25
28
|
|
29
|
+
@key_alias = options[:as] if options[:as].is_a?(Symbol)
|
26
30
|
@key ||= key
|
27
31
|
end
|
28
32
|
|
@@ -102,7 +106,9 @@ module JSONError
|
|
102
106
|
end
|
103
107
|
|
104
108
|
def visible_properties_hash
|
105
|
-
Hash[visible_properties.map { |property| [property, send(property)] }]
|
109
|
+
h = Hash[visible_properties.map { |property| [property, send(property)] }]
|
110
|
+
h[key_alias] = h.delete(:key) unless key_alias.nil?
|
111
|
+
h
|
106
112
|
end
|
107
113
|
|
108
114
|
def visible_properties
|
@@ -112,5 +118,9 @@ module JSONError
|
|
112
118
|
def custom_properties
|
113
119
|
self.class.custom_properties || []
|
114
120
|
end
|
121
|
+
|
122
|
+
def key_alias
|
123
|
+
self.class.key_alias
|
124
|
+
end
|
115
125
|
end
|
116
126
|
end
|
data/lib/json_error/version.rb
CHANGED
@@ -16,3 +16,11 @@ class ChildError < MissingTranslations
|
|
16
16
|
translated_properties :additional_translated
|
17
17
|
custom_properties :additional_custom
|
18
18
|
end
|
19
|
+
|
20
|
+
class WithKeyAlias < JSONError.base
|
21
|
+
key :with_key_alias, as: :error_code
|
22
|
+
end
|
23
|
+
|
24
|
+
class WithKeyAliasChild < WithKeyAlias
|
25
|
+
key :with_key_alias_child
|
26
|
+
end
|
@@ -272,3 +272,59 @@ describe ChildError do
|
|
272
272
|
end
|
273
273
|
end
|
274
274
|
end
|
275
|
+
|
276
|
+
describe WithKeyAlias do
|
277
|
+
let(:error_object) { described_class.new }
|
278
|
+
let(:error_key) { :with_key_alias }
|
279
|
+
|
280
|
+
describe '#key' do
|
281
|
+
subject { error_object.key }
|
282
|
+
it { is_expected.to eq(error_key) }
|
283
|
+
end
|
284
|
+
|
285
|
+
describe '#to_json' do
|
286
|
+
let(:parse) { -> (s) { JSON.parse(s) } }
|
287
|
+
subject { error_object.to_json }
|
288
|
+
|
289
|
+
describe '#keys' do
|
290
|
+
let(:keys) { %w(status error_code) }
|
291
|
+
it { expect(parse.call(subject).keys).to eq(keys) }
|
292
|
+
end
|
293
|
+
|
294
|
+
describe 'status property' do
|
295
|
+
it { expect(parse.call(subject)['status']).to eq(500) }
|
296
|
+
end
|
297
|
+
|
298
|
+
describe 'error_code property' do
|
299
|
+
it { expect(parse.call(subject)['error_code']).to eq(error_key.to_s) }
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
describe WithKeyAliasChild do
|
305
|
+
let(:error_object) { described_class.new }
|
306
|
+
let(:error_key) { :with_key_alias_child }
|
307
|
+
|
308
|
+
describe '#key' do
|
309
|
+
subject { error_object.key }
|
310
|
+
it { is_expected.to eq(error_key) }
|
311
|
+
end
|
312
|
+
|
313
|
+
describe '#to_json' do
|
314
|
+
let(:parse) { -> (s) { JSON.parse(s) } }
|
315
|
+
subject { error_object.to_json }
|
316
|
+
|
317
|
+
describe '#keys' do
|
318
|
+
let(:keys) { %w(status error_code) }
|
319
|
+
it { expect(parse.call(subject).keys).to eq(keys) }
|
320
|
+
end
|
321
|
+
|
322
|
+
describe 'status property' do
|
323
|
+
it { expect(parse.call(subject)['status']).to eq(500) }
|
324
|
+
end
|
325
|
+
|
326
|
+
describe 'error_code property' do
|
327
|
+
it { expect(parse.call(subject)['error_code']).to eq(error_key.to_s) }
|
328
|
+
end
|
329
|
+
end
|
330
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_error
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Buszewicz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: codeclimate-test-reporter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description:
|
84
98
|
email:
|
85
99
|
- krzysztof.buszewicz@gmail.com
|
@@ -129,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
143
|
version: '0'
|
130
144
|
requirements: []
|
131
145
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.4.
|
146
|
+
rubygems_version: 2.4.8
|
133
147
|
signing_key:
|
134
148
|
specification_version: 4
|
135
149
|
summary: JSON errors base for APIs.
|