ree_lib 1.0.84 → 1.0.86
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/Gemfile.lock +5 -7
- 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/association.rb +5 -29
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/agg.rb +4 -28
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_array.rb +2 -2
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb +2 -2
- data/lib/ree_lib/packages/ree_dao/package/ree_dao.rb +0 -1
- data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb +2 -2
- 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 +1 -6
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/integer_value_enum_mapper.rb +1 -1
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/string_value_enum_mapper.rb +1 -1
- data/lib/ree_lib/packages/ree_enum/spec/ree_enum/dsl_spec.rb +9 -1
- 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/bool.rb +2 -2
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date.rb +3 -3
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date_time.rb +3 -3
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/float.rb +3 -3
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/integer.rb +6 -6
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/rational.rb +3 -3
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/string.rb +1 -1
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/time.rb +3 -3
- 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 +4 -4
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb +1 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_factory_spec.rb +2 -2
- 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 +20 -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/version.rb +1 -1
- metadata +3 -16
@@ -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,24 @@ 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
|
-
expect { mapper.db_dump({ time: Time.new(2020).to_s }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
96
|
+
expect { mapper.db_dump({ time: Time.new(2020).to_s }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `\"2020-01-01 00:00:00 +0000\"`")
|
95
97
|
}
|
96
98
|
|
97
99
|
it {
|
98
|
-
expect { mapper.db_dump({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
100
|
+
expect { mapper.db_dump({ time: '2020-01-01' }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `\"2020-01-01\"`")
|
99
101
|
}
|
100
102
|
|
101
103
|
it {
|
102
|
-
|
104
|
+
object = Object.new
|
105
|
+
expect { mapper.db_dump({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
103
106
|
}
|
104
107
|
end
|
105
108
|
|
@@ -121,15 +124,16 @@ RSpec.describe 'ReeMapper::Time' do
|
|
121
124
|
}
|
122
125
|
|
123
126
|
it {
|
124
|
-
expect { mapper.db_load({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
|
127
|
+
expect { mapper.db_load({ time: Date.new(2020) }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{Date.new(2020).inspect}`")
|
125
128
|
}
|
126
129
|
|
127
130
|
it {
|
128
|
-
|
131
|
+
object = Object.new
|
132
|
+
expect { mapper.db_load({ time: object }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time, got `#{object.inspect}`")
|
129
133
|
}
|
130
134
|
|
131
135
|
it {
|
132
|
-
expect { mapper.db_load({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time")
|
136
|
+
expect { mapper.db_load({ time: 'no date time' }) }.to raise_error(ReeMapper::CoercionError, "`time` is invalid time, got `\"no date time\"`")
|
133
137
|
}
|
134
138
|
end
|
135
139
|
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/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.86
|
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-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ree
|
@@ -122,20 +122,6 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 3.1.1
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: fiber_scheduler
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.13.0
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.13.0
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: rack-test
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -287,6 +273,7 @@ files:
|
|
287
273
|
- lib/ree_lib/packages/ree_actions/bin/console
|
288
274
|
- lib/ree_lib/packages/ree_actions/package/ree_actions.rb
|
289
275
|
- lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb
|
276
|
+
- lib/ree_lib/packages/ree_actions/package/ree_actions/errors.rb
|
290
277
|
- lib/ree_lib/packages/ree_actions/spec/package_schema_spec.rb
|
291
278
|
- lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb
|
292
279
|
- lib/ree_lib/packages/ree_actions/spec/spec_helper.rb
|