invalid_model-serializer 0.1.4 → 0.2

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: 067c71c283928d9242599a7911dc549fc1096d5366cc38b61ea06ba5f63faa43
4
- data.tar.gz: b028fd253456429957c683449a51320cfa18c6bfe9ae95e3c0e3a2fbfbd70bb5
3
+ metadata.gz: 32775b48469a11188d19d7f43714cb1a2dc2ddcb5824aa694c2f8ff63781e8de
4
+ data.tar.gz: 733e2006980d7764f3d479d3ae3f0c86b7ea13b289bc65804ee2975a3e2bf994
5
5
  SHA512:
6
- metadata.gz: 56515b01c79c08e300230a6c566cc632ab1b78f82d0aad54c2cd2c61f4c6dc6b9bb27ca962fa804fb027956685888b7d4225a20b1ee5627768c3d33283bb863f
7
- data.tar.gz: 1a8f9885ecb304fbbc577f82a447e044049e3328620cb9344a6ae6dbf9df078e0af6900f958c6cb381aa6bc7d2389b02edf08e81d0006e0dab8c478d1ab00459
6
+ metadata.gz: 762f08d1c2e8d11774938372013ef919be875d883ca8f0608ba85b52d815ad41df6715d3d685f4eb8a0cb045ed19446e201e00d9bd2e309aebf8cd9e6705eb1d
7
+ data.tar.gz: a28294beaa509f73419cea46b34f9ad350895f04526566a88429c04f79614a2f8c67a3493353a63bd4221ea08282838692e241869109b892ea0c05ddee0b5d1e
@@ -1,6 +1,7 @@
1
1
  module InvalidModel
2
- class ErrorSerializer
3
- def initialize(error, options = {})
2
+ class EachSerializer
3
+ def initialize(resource, error, options = {})
4
+ @resource = resource
4
5
  @error = error
5
6
  @options = options
6
7
  end
@@ -9,7 +10,7 @@ module InvalidModel
9
10
  {
10
11
  code: code,
11
12
  detail: detail,
12
- meta: meta.presence,
13
+ meta: meta,
13
14
  source: source,
14
15
  status: status
15
16
  }.compact
@@ -17,13 +18,14 @@ module InvalidModel
17
18
 
18
19
  private
19
20
 
20
- attr_reader :error
21
+ attr_reader :error, :resource
21
22
 
22
- delegate :attribute, :detail, :meta, :model_name, :type, to: :error
23
+ delegate :attribute, :type, to: :error
24
+ delegate :errors, :model_name, to: :resource
23
25
 
24
26
  def code
25
- if @options[:code]&.respond_to?(:call)
26
- @options[:code].call error
27
+ if @options[:code].respond_to?(:call)
28
+ @options[:code].call resource, error
27
29
  elsif @options[:code]
28
30
  @options[:code]
29
31
  else
@@ -35,6 +37,14 @@ module InvalidModel
35
37
  @options[:code_format] || InvalidModel::Serializer.default_code_format
36
38
  end
37
39
 
40
+ def detail
41
+ errors.full_message(attribute, errors.generate_message(attribute, type, error.options))
42
+ end
43
+
44
+ def meta
45
+ error.options.presence
46
+ end
47
+
38
48
  def source
39
49
  return @options[:source] if @options.key?(:source)
40
50
  return if attribute == :base
@@ -2,8 +2,8 @@
2
2
  require 'active_support'
3
3
 
4
4
  module InvalidModel
5
- autoload :Error, 'invalid_model/error'
6
- autoload :ErrorSerializer, 'invalid_model/error_serializer'
5
+ autoload :Error, 'invalid_model/error'
6
+ autoload :EachSerializer, 'invalid_model/each_serializer'
7
7
 
8
8
  class Serializer
9
9
  include ActiveSupport::Configurable
@@ -17,30 +17,17 @@ module InvalidModel
17
17
  end
18
18
 
19
19
  def serializable_hash
20
- {
21
- errors: serialized_errors
22
- }
20
+ list = []
21
+ @resource.errors.each do |error|
22
+ list << each_serializer_klass.new(@resource, error, @options).serializable_hash
23
+ end
24
+ {errors: list}
23
25
  end
24
26
 
25
27
  private
26
28
 
27
29
  def each_serializer_klass
28
- @options[:each_serializer] || ErrorSerializer
29
- end
30
-
31
- def errors_object
32
- @resource.errors
33
- end
34
-
35
- def errors_list
36
- list = errors_object.details.map do |key, array|
37
- array.map { |error| Error.from_hash(errors_object, key, error) }
38
- end
39
- list.flatten
40
- end
41
-
42
- def serialized_errors
43
- errors_list.map { |error| each_serializer_klass.new(error, @options).serializable_hash }
30
+ @options[:each_serializer] || EachSerializer
44
31
  end
45
32
  end
46
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: invalid_model-serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - mkon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-24 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '7'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '5.0'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '7'
@@ -84,28 +84,28 @@ dependencies:
84
84
  requirements:
85
85
  - - '='
86
86
  - !ruby/object:Gem::Version
87
- version: 0.75.1
87
+ version: 1.11.0
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - '='
93
93
  - !ruby/object:Gem::Version
94
- version: 0.75.1
94
+ version: 1.11.0
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: rubocop-rspec
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: 1.33.0
101
+ version: 2.2.0
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - '='
107
107
  - !ruby/object:Gem::Version
108
- version: 1.33.0
108
+ version: 2.2.0
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: simplecov
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -129,8 +129,7 @@ extra_rdoc_files: []
129
129
  files:
130
130
  - LICENSE
131
131
  - README.md
132
- - lib/invalid_model/error.rb
133
- - lib/invalid_model/error_serializer.rb
132
+ - lib/invalid_model/each_serializer.rb
134
133
  - lib/invalid_model/serializer.rb
135
134
  homepage: https://github.com/mkon/invalid_model-serializer
136
135
  licenses:
@@ -142,16 +141,16 @@ require_paths:
142
141
  - lib
143
142
  required_ruby_version: !ruby/object:Gem::Requirement
144
143
  requirements:
145
- - - ">="
144
+ - - "~>"
146
145
  - !ruby/object:Gem::Version
147
- version: '0'
146
+ version: '2.6'
148
147
  required_rubygems_version: !ruby/object:Gem::Requirement
149
148
  requirements:
150
149
  - - ">="
151
150
  - !ruby/object:Gem::Version
152
151
  version: '0'
153
152
  requirements: []
154
- rubygems_version: 3.0.6
153
+ rubygems_version: 3.1.4
155
154
  signing_key:
156
155
  specification_version: 4
157
156
  summary: Serialize models with validation errors to json-api errors.
@@ -1,24 +0,0 @@
1
- module InvalidModel
2
- class Error
3
- def self.from_hash(errors_object, attribute, hash)
4
- new(errors_object, attribute, hash[:error], hash.except(:error))
5
- end
6
-
7
- attr_reader :attribute, :errors_object, :type, :meta
8
-
9
- def initialize(errors_object, attribute, type, meta)
10
- @errors_object = errors_object
11
- @attribute = attribute
12
- @type = type
13
- @meta = meta
14
- end
15
-
16
- def detail
17
- @errors_object.full_message(attribute, errors_object.generate_message(attribute, type, meta))
18
- end
19
-
20
- def model_name
21
- errors_object.instance_variable_get(:@base).model_name
22
- end
23
- end
24
- end