invalid_model-serializer 0.1.4 → 0.3.1

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: 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