invalid_model-serializer 0.1.3 → 0.3.0

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
  SHA256:
3
- metadata.gz: 5d55a2f5c8261fe3af1fde8d0fc86cafd77bfaadd14bb78cb6c8e2b8a7543d4e
4
- data.tar.gz: b770cad24b481b51d8af23c4901b6e21c8ee7be07a5ffb7ceb2987b646bcb56a
3
+ metadata.gz: 9df9c8c97e477bfe43272531f1f9a140277bfa6930954ef23679cca0d4609d94
4
+ data.tar.gz: c46c3cb748b469558e2537c6a20ddf7039555c0eaaf1241e0b2673121dd41cbc
5
5
  SHA512:
6
- metadata.gz: 4cc2c45fd7a174c0382211e52abbc97c9d8a7f1c29cbdbbf5f4cf1cac69976d59f3966f4d770a92b185cfeaeed5350bec2786c40994a417d21411cf2e67d90db
7
- data.tar.gz: 8442649071fa52c380032519f7c221c31e9b341bdbf227051081ff7954366c74d233886adbb8fad0468ace0ac75c89d99ee34ab9a913aee82cb93dffca97554f
6
+ metadata.gz: 4ea7f952abaa153b05dcdf912fbaf88a4ce8979c29a6add096057f9295544e9f534a1e5cc6c8e28c622246707a4e8df6c09e83c88414f30aac84c895078573b1
7
+ data.tar.gz: 610f619ced00bf1aa0e6969646d6ed76e8cfc875a5fd8d29b0ab3b9270c313f29ead66caeaa705451cf51839d906a562dcf0c70d67a530cc5516950a033575a4
@@ -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,16 @@ 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
+ return unless error.options.present?
46
+
47
+ error.options.except(*ActiveModel::Error::CALLBACKS_OPTIONS)
48
+ end
49
+
38
50
  def source
39
51
  return @options[:source] if @options.key?(:source)
40
52
  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.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mkon
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-05 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,34 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6'
22
+ version: '7.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.2'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6'
32
+ version: '7.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activemodel
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 5.2.2
39
+ version: '6.1'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '7.1'
40
43
  type: :development
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '6.1'
50
+ - - "<"
45
51
  - !ruby/object:Gem::Version
46
- version: 5.2.2
52
+ version: '7.1'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: json_spec
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -78,28 +84,28 @@ dependencies:
78
84
  requirements:
79
85
  - - '='
80
86
  - !ruby/object:Gem::Version
81
- version: 0.73.0
87
+ version: 1.28.2
82
88
  type: :development
83
89
  prerelease: false
84
90
  version_requirements: !ruby/object:Gem::Requirement
85
91
  requirements:
86
92
  - - '='
87
93
  - !ruby/object:Gem::Version
88
- version: 0.73.0
94
+ version: 1.28.2
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: rubocop-rspec
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
99
  - - '='
94
100
  - !ruby/object:Gem::Version
95
- version: 1.33.0
101
+ version: 2.10.0
96
102
  type: :development
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - '='
101
107
  - !ruby/object:Gem::Version
102
- version: 1.33.0
108
+ version: 2.10.0
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: simplecov
105
111
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +120,7 @@ dependencies:
114
120
  - - "~>"
115
121
  - !ruby/object:Gem::Version
116
122
  version: '0.16'
117
- description:
123
+ description:
118
124
  email:
119
125
  - konstantin@munteanu.de
120
126
  executables: []
@@ -123,14 +129,14 @@ extra_rdoc_files: []
123
129
  files:
124
130
  - LICENSE
125
131
  - README.md
126
- - lib/invalid_model/error.rb
127
- - lib/invalid_model/error_serializer.rb
132
+ - lib/invalid_model/each_serializer.rb
128
133
  - lib/invalid_model/serializer.rb
129
134
  homepage: https://github.com/mkon/invalid_model-serializer
130
135
  licenses:
131
136
  - MIT
132
- metadata: {}
133
- post_install_message:
137
+ metadata:
138
+ rubygems_mfa_required: 'true'
139
+ post_install_message:
134
140
  rdoc_options: []
135
141
  require_paths:
136
142
  - lib
@@ -138,15 +144,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
144
  requirements:
139
145
  - - ">="
140
146
  - !ruby/object:Gem::Version
141
- version: '0'
147
+ version: '2.7'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '3.1'
142
151
  required_rubygems_version: !ruby/object:Gem::Requirement
143
152
  requirements:
144
153
  - - ">="
145
154
  - !ruby/object:Gem::Version
146
155
  version: '0'
147
156
  requirements: []
148
- rubygems_version: 3.0.4
149
- signing_key:
157
+ rubygems_version: 3.2.15
158
+ signing_key:
150
159
  specification_version: 4
151
160
  summary: Serialize models with validation errors to json-api errors.
152
161
  test_files: []
@@ -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