ree_lib 1.0.85 → 1.0.87
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 +4 -4
- data/.ruby-version +1 -1
- data/Gemfile.lock +31 -26
- data/lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb +11 -3
- data/lib/ree_lib/packages/ree_actions/package/ree_actions/errors.rb +3 -0
- data/lib/ree_lib/packages/ree_actions/package/ree_actions.rb +1 -0
- data/lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb +5 -1
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_array.rb +12 -8
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb +12 -8
- data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb +3 -3
- data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_jsonb_spec.rb +8 -6
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/base_enum_mapper.rb +5 -10
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/integer_value_enum_mapper.rb +5 -5
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/string_value_enum_mapper.rb +5 -5
- data/lib/ree_lib/packages/ree_enum/spec/ree_enum/dsl_spec.rb +10 -2
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/coercion_error.rb +1 -1
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/error_with_location.rb +25 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/type_error.rb +1 -1
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/field.rb +12 -4
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper.rb +12 -6
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper_factory.rb +17 -4
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/abstract_type.rb +6 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/any.rb +8 -8
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/bool.rb +12 -12
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date.rb +13 -13
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date_time.rb +13 -13
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/float.rb +13 -13
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/integer.rb +16 -16
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/rational.rb +13 -13
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/string.rb +12 -12
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/time.rb +13 -13
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/wrappers/abstract_wrapper.rb +7 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/wrappers/array.rb +73 -21
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb +2 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_factory_spec.rb +10 -6
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_spec.rb +7 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/bool_spec.rb +10 -8
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_spec.rb +12 -10
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_time_spec.rb +20 -16
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/float_spec.rb +17 -13
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/hash_spec.rb +1 -1
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/integer_spec.rb +14 -14
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/rational_spec.rb +16 -12
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/string_spec.rb +24 -12
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/time_spec.rb +21 -16
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/type_options_spec.rb +4 -4
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/wrappers/array_spec.rb +6 -6
- data/lib/ree_lib/packages/ree_roda/package/ree_roda/app.rb +3 -2
- data/lib/ree_lib/packages/ree_roda/spec/ree_roda/app_spec.rb +28 -0
- data/lib/ree_lib/spec.init.rb +3 -1
- data/lib/ree_lib/version.rb +1 -1
- metadata +19 -3
@@ -27,23 +27,24 @@ RSpec.describe 'ReeMapper::Time' do
|
|
27
27
|
}
|
28
28
|
|
29
29
|
it {
|
30
|
-
expect { mapper.serialize({ time: DateTime.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
30
|
+
expect { mapper.serialize({ time: DateTime.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{DateTime.new(2020).inspect}`")
|
31
31
|
}
|
32
32
|
|
33
33
|
it {
|
34
|
-
expect { mapper.serialize({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
34
|
+
expect { mapper.serialize({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{Date.new(2020).inspect}`")
|
35
35
|
}
|
36
36
|
|
37
37
|
it {
|
38
|
-
expect { mapper.serialize({ time: DateTime.new(2020).to_s }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
38
|
+
expect { mapper.serialize({ time: DateTime.new(2020).to_s }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `\"2020-01-01T00:00:00+00:00\"`")
|
39
39
|
}
|
40
40
|
|
41
41
|
it {
|
42
|
-
expect { mapper.serialize({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
42
|
+
expect { mapper.serialize({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `\"2020-01-01\"`")
|
43
43
|
}
|
44
44
|
|
45
45
|
it {
|
46
|
-
|
46
|
+
object = Object.new
|
47
|
+
expect { mapper.serialize({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
47
48
|
}
|
48
49
|
end
|
49
50
|
|
@@ -65,15 +66,16 @@ RSpec.describe 'ReeMapper::Time' do
|
|
65
66
|
}
|
66
67
|
|
67
68
|
it {
|
68
|
-
expect { mapper.cast({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
69
|
+
expect { mapper.cast({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{Date.new(2020).inspect}`")
|
69
70
|
}
|
70
71
|
|
71
72
|
it {
|
72
|
-
|
73
|
+
object = Object.new
|
74
|
+
expect { mapper.cast({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
73
75
|
}
|
74
76
|
|
75
77
|
it {
|
76
|
-
expect { mapper.cast({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time")
|
78
|
+
expect { mapper.cast({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time, got `\"no date time\"`")
|
77
79
|
}
|
78
80
|
end
|
79
81
|
|
@@ -83,23 +85,25 @@ RSpec.describe 'ReeMapper::Time' do
|
|
83
85
|
}
|
84
86
|
|
85
87
|
it {
|
86
|
-
expect { mapper.serialize({ time: DateTime.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
88
|
+
expect { mapper.serialize({ time: DateTime.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{DateTime.new(2020).inspect}`")
|
87
89
|
}
|
88
90
|
|
89
91
|
it {
|
90
|
-
expect { mapper.db_dump({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
92
|
+
expect { mapper.db_dump({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{Date.new(2020).inspect}`")
|
91
93
|
}
|
92
94
|
|
93
95
|
it {
|
94
|
-
|
96
|
+
time = Time.new(2020).to_s
|
97
|
+
expect { mapper.db_dump({ time: time }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{time.inspect}`")
|
95
98
|
}
|
96
99
|
|
97
100
|
it {
|
98
|
-
expect { mapper.db_dump({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
101
|
+
expect { mapper.db_dump({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `\"2020-01-01\"`")
|
99
102
|
}
|
100
103
|
|
101
104
|
it {
|
102
|
-
|
105
|
+
object = Object.new
|
106
|
+
expect { mapper.db_dump({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
103
107
|
}
|
104
108
|
end
|
105
109
|
|
@@ -121,15 +125,16 @@ RSpec.describe 'ReeMapper::Time' do
|
|
121
125
|
}
|
122
126
|
|
123
127
|
it {
|
124
|
-
expect { mapper.db_load({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
128
|
+
expect { mapper.db_load({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{Date.new(2020).inspect}`")
|
125
129
|
}
|
126
130
|
|
127
131
|
it {
|
128
|
-
|
132
|
+
object = Object.new
|
133
|
+
expect { mapper.db_load({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
129
134
|
}
|
130
135
|
|
131
136
|
it {
|
132
|
-
expect { mapper.db_load({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time")
|
137
|
+
expect { mapper.db_load({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time, got `\"no date time\"`")
|
133
138
|
}
|
134
139
|
end
|
135
140
|
end
|
@@ -193,7 +193,7 @@ RSpec.describe 'ReeMapper::MapperFactory type options' do
|
|
193
193
|
}
|
194
194
|
|
195
195
|
it {
|
196
|
-
expect { mapper.cast({}) }.to raise_error(ReeMapper::TypeError)
|
196
|
+
expect { mapper.cast({}) }.to raise_error(ReeMapper::TypeError, "Missing required field `number` for `root`")
|
197
197
|
}
|
198
198
|
|
199
199
|
it {
|
@@ -226,7 +226,7 @@ RSpec.describe 'ReeMapper::MapperFactory type options' do
|
|
226
226
|
}
|
227
227
|
|
228
228
|
it {
|
229
|
-
expect { mapper.cast({ number: nil, number_or_nil: 1 }) }.to raise_error(ReeMapper::TypeError)
|
229
|
+
expect { mapper.cast({ number: nil, number_or_nil: 1 }) }.to raise_error(ReeMapper::TypeError, "`number` should be an integer, got `nil`")
|
230
230
|
}
|
231
231
|
end
|
232
232
|
|
@@ -306,7 +306,7 @@ RSpec.describe 'ReeMapper::MapperFactory type options' do
|
|
306
306
|
}
|
307
307
|
|
308
308
|
it {
|
309
|
-
expect { mapper.cast({ number: nil }) }.to raise_error(ReeMapper::TypeError, '`number` should be an integer')
|
309
|
+
expect { mapper.cast({ number: nil }) }.to raise_error(ReeMapper::TypeError, '`number` should be an integer, got `nil`')
|
310
310
|
}
|
311
311
|
|
312
312
|
it {
|
@@ -319,7 +319,7 @@ RSpec.describe 'ReeMapper::MapperFactory type options' do
|
|
319
319
|
let(:mapper) { mapper_factory.call.use(:cast) { integer? :number, default: :not_number } }
|
320
320
|
|
321
321
|
it {
|
322
|
-
expect { mapper.cast({}) }.to raise_error(ReeMapper::TypeError, '`number` should be an integer')
|
322
|
+
expect { mapper.cast({}) }.to raise_error(ReeMapper::TypeError, '`number` should be an integer, got `:not_number`')
|
323
323
|
}
|
324
324
|
end
|
325
325
|
end
|
@@ -28,15 +28,15 @@ RSpec.describe 'ReeMapper::Array' do
|
|
28
28
|
}
|
29
29
|
|
30
30
|
it {
|
31
|
-
expect { mapper.serialize({ tags: 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array")
|
31
|
+
expect { mapper.serialize({ tags: 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array, got `1`")
|
32
32
|
}
|
33
33
|
|
34
34
|
it {
|
35
|
-
expect { mapper.serialize({tags: [1], ary_of_ary: ["1"] }) }.to raise_error(ReeMapper::TypeError, "`ary_of_ary[0]` should be an array")
|
35
|
+
expect { mapper.serialize({tags: [1], ary_of_ary: ["1"] }) }.to raise_error(ReeMapper::TypeError, "`ary_of_ary[0]` should be an array, got `\"1\"`")
|
36
36
|
}
|
37
37
|
|
38
38
|
it {
|
39
|
-
expect { mapper.serialize({tags: [1], ary_of_ary: [[1, "1"]] }) }.to raise_error(ReeMapper::TypeError, "`ary_of_ary[0][1]` should be an integer")
|
39
|
+
expect { mapper.serialize({tags: [1], ary_of_ary: [[1, "1"]] }) }.to raise_error(ReeMapper::TypeError, "`ary_of_ary[0][1]` should be an integer, got `\"1\"`")
|
40
40
|
}
|
41
41
|
end
|
42
42
|
|
@@ -46,7 +46,7 @@ RSpec.describe 'ReeMapper::Array' do
|
|
46
46
|
}
|
47
47
|
|
48
48
|
it {
|
49
|
-
expect { mapper.cast({ 'tags' => 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array")
|
49
|
+
expect { mapper.cast({ 'tags' => 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array, got `1`")
|
50
50
|
}
|
51
51
|
end
|
52
52
|
|
@@ -56,7 +56,7 @@ RSpec.describe 'ReeMapper::Array' do
|
|
56
56
|
}
|
57
57
|
|
58
58
|
it {
|
59
|
-
expect { mapper.db_dump(OpenStruct.new({ tags: 1 })) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array")
|
59
|
+
expect { mapper.db_dump(OpenStruct.new({ tags: 1 })) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array, got `1`")
|
60
60
|
}
|
61
61
|
end
|
62
62
|
|
@@ -66,7 +66,7 @@ RSpec.describe 'ReeMapper::Array' do
|
|
66
66
|
}
|
67
67
|
|
68
68
|
it {
|
69
|
-
expect { mapper.db_load({ 'tags' => 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array")
|
69
|
+
expect { mapper.db_load({ 'tags' => 1 }) }.to raise_error(ReeMapper::TypeError, "`tags` should be an array, got `1`")
|
70
70
|
}
|
71
71
|
end
|
72
72
|
|
@@ -1,5 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
package_require("ree_errors/error")
|
2
|
-
package_require("
|
3
|
+
package_require("ree_actions/errors")
|
3
4
|
|
4
5
|
class ReeRoda::App < Roda
|
5
6
|
include Ree::LinkDSL
|
@@ -25,7 +26,7 @@ class ReeRoda::App < Roda
|
|
25
26
|
response.status = status_from_error(e.type)
|
26
27
|
response.write(to_json(body))
|
27
28
|
response.finish
|
28
|
-
elsif e.is_a?(
|
29
|
+
elsif e.is_a?(ReeActions::ParamError)
|
29
30
|
body = {
|
30
31
|
code: "param",
|
31
32
|
message: e.message,
|
@@ -36,6 +36,16 @@ RSpec.describe ReeRoda::App do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
class ReeRodaTest::SerializerErrorCmd
|
40
|
+
include ReeActions::DSL
|
41
|
+
|
42
|
+
action :serializer_error_cmd
|
43
|
+
|
44
|
+
def call(access, attrs)
|
45
|
+
{result: :not_string}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
39
49
|
class ReeRodaTest::AnotherCmd
|
40
50
|
include ReeActions::DSL
|
41
51
|
|
@@ -169,6 +179,14 @@ RSpec.describe ReeRoda::App do
|
|
169
179
|
action :cmd, **opts
|
170
180
|
serializer :serializer, **opts
|
171
181
|
end
|
182
|
+
|
183
|
+
get "api/serializer_error" do
|
184
|
+
summary "Action with serializer error"
|
185
|
+
warden_scope :visitor
|
186
|
+
sections "some_action"
|
187
|
+
action :serializer_error_cmd, **opts
|
188
|
+
serializer :serializer, **opts
|
189
|
+
end
|
172
190
|
end
|
173
191
|
end
|
174
192
|
|
@@ -264,4 +282,14 @@ RSpec.describe ReeRoda::App do
|
|
264
282
|
expect(last_response.status).to eq(201)
|
265
283
|
expect(last_response.body).to eq("{\"result\":\"another_result\"}")
|
266
284
|
}
|
285
|
+
|
286
|
+
it {
|
287
|
+
get "api/action/not_integer"
|
288
|
+
expect(last_response.status).to eq(400)
|
289
|
+
}
|
290
|
+
|
291
|
+
it {
|
292
|
+
get "api/serializer_error"
|
293
|
+
expect(last_response.status).to eq(500)
|
294
|
+
}
|
267
295
|
end
|
data/lib/ree_lib/spec.init.rb
CHANGED
data/lib/ree_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ree_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.87
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruslan Gatiyatov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ree
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 3.1.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: bigdecimal
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 3.1.6
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 3.1.6
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rack-test
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -273,6 +287,7 @@ files:
|
|
273
287
|
- lib/ree_lib/packages/ree_actions/bin/console
|
274
288
|
- lib/ree_lib/packages/ree_actions/package/ree_actions.rb
|
275
289
|
- lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb
|
290
|
+
- lib/ree_lib/packages/ree_actions/package/ree_actions/errors.rb
|
276
291
|
- lib/ree_lib/packages/ree_actions/spec/package_schema_spec.rb
|
277
292
|
- lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb
|
278
293
|
- lib/ree_lib/packages/ree_actions/spec/spec_helper.rb
|
@@ -1003,6 +1018,7 @@ files:
|
|
1003
1018
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/argument_error.rb
|
1004
1019
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/coercion_error.rb
|
1005
1020
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/error.rb
|
1021
|
+
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/error_with_location.rb
|
1006
1022
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/type_error.rb
|
1007
1023
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/unsupported_type_error.rb
|
1008
1024
|
- lib/ree_lib/packages/ree_mapper/package/ree_mapper/field.rb
|
@@ -1391,7 +1407,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1391
1407
|
- !ruby/object:Gem::Version
|
1392
1408
|
version: '0'
|
1393
1409
|
requirements: []
|
1394
|
-
rubygems_version: 3.
|
1410
|
+
rubygems_version: 3.5.3
|
1395
1411
|
signing_key:
|
1396
1412
|
specification_version: 4
|
1397
1413
|
summary: Ruby Standard Library Extensions
|