invalid_model-serializer 0.1.4 → 0.2

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