invalid_model-serializer 0.1.4 → 0.3.1

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: 067c71c283928d9242599a7911dc549fc1096d5366cc38b61ea06ba5f63faa43
4
- data.tar.gz: b028fd253456429957c683449a51320cfa18c6bfe9ae95e3c0e3a2fbfbd70bb5
3
+ metadata.gz: 211562b29a0c4e18ae13d162db82180b8a5f1f8086c16c216e74ee3bea4e010a
4
+ data.tar.gz: 4548049ae816840f13712e540cc225ee083ca10934c2805bd4a06d23b7443251
5
5
  SHA512:
6
- metadata.gz: 56515b01c79c08e300230a6c566cc632ab1b78f82d0aad54c2cd2c61f4c6dc6b9bb27ca962fa804fb027956685888b7d4225a20b1ee5627768c3d33283bb863f
7
- data.tar.gz: 1a8f9885ecb304fbbc577f82a447e044049e3328620cb9344a6ae6dbf9df078e0af6900f958c6cb381aa6bc7d2389b02edf08e81d0006e0dab8c478d1ab00459
6
+ metadata.gz: 8254441d6aaed5085a8cce35430006137fccc95f8efb4ded700363e7c07584c9118831e36e439ab5870995b8d9b2b6108325f6b6c7df79534b942b8d56ec443f
7
+ data.tar.gz: e9c24ee8544d0817fa583c00936a3f9184c4a2755215c142d1a2ee77711ea0da11d57bc8d945cbc797d871a2c83f397c7d5188e904669b11395adcadae3b25cc
@@ -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.4
4
+ version: 0.3.1
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-10-24 00:00:00.000000000 Z
11
+ date: 2022-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,40 +16,40 @@ 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
- version: '7'
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: '5.0'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
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.0'
39
+ version: '6.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '7'
42
+ version: '7.1'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '5.0'
49
+ version: '6.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '7'
52
+ version: '7.1'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: json_spec
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -84,28 +84,28 @@ dependencies:
84
84
  requirements:
85
85
  - - '='
86
86
  - !ruby/object:Gem::Version
87
- version: 0.75.1
87
+ version: 1.29.1
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.29.1
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.11.1
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.11.1
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: simplecov
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,7 @@ dependencies:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0.16'
123
- description:
123
+ description:
124
124
  email:
125
125
  - konstantin@munteanu.de
126
126
  executables: []
@@ -129,14 +129,14 @@ 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:
137
136
  - MIT
138
- metadata: {}
139
- post_install_message:
137
+ metadata:
138
+ rubygems_mfa_required: 'true'
139
+ post_install_message:
140
140
  rdoc_options: []
141
141
  require_paths:
142
142
  - lib
@@ -144,15 +144,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - ">="
146
146
  - !ruby/object:Gem::Version
147
- version: '0'
147
+ version: '2.7'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '4'
148
151
  required_rubygems_version: !ruby/object:Gem::Requirement
149
152
  requirements:
150
153
  - - ">="
151
154
  - !ruby/object:Gem::Version
152
155
  version: '0'
153
156
  requirements: []
154
- rubygems_version: 3.0.6
155
- signing_key:
157
+ rubygems_version: 3.3.7
158
+ signing_key:
156
159
  specification_version: 4
157
160
  summary: Serialize models with validation errors to json-api errors.
158
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