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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +5 -7
  3. data/lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb +11 -3
  4. data/lib/ree_lib/packages/ree_actions/package/ree_actions/errors.rb +3 -0
  5. data/lib/ree_lib/packages/ree_actions/package/ree_actions.rb +1 -0
  6. data/lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb +5 -1
  7. data/lib/ree_lib/packages/ree_dao/package/ree_dao/association.rb +5 -29
  8. data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/agg.rb +4 -28
  9. data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_array.rb +2 -2
  10. data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb +2 -2
  11. data/lib/ree_lib/packages/ree_dao/package/ree_dao.rb +0 -1
  12. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb +2 -2
  13. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_jsonb_spec.rb +8 -6
  14. data/lib/ree_lib/packages/ree_enum/package/ree_enum/base_enum_mapper.rb +1 -6
  15. data/lib/ree_lib/packages/ree_enum/package/ree_enum/integer_value_enum_mapper.rb +1 -1
  16. data/lib/ree_lib/packages/ree_enum/package/ree_enum/string_value_enum_mapper.rb +1 -1
  17. data/lib/ree_lib/packages/ree_enum/spec/ree_enum/dsl_spec.rb +9 -1
  18. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/abstract_type.rb +6 -0
  19. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/bool.rb +2 -2
  20. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date.rb +3 -3
  21. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date_time.rb +3 -3
  22. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/float.rb +3 -3
  23. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/integer.rb +6 -6
  24. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/rational.rb +3 -3
  25. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/string.rb +1 -1
  26. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/time.rb +3 -3
  27. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/wrappers/abstract_wrapper.rb +7 -0
  28. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/wrappers/array.rb +4 -4
  29. data/lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb +1 -0
  30. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_factory_spec.rb +2 -2
  31. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/bool_spec.rb +10 -8
  32. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_spec.rb +12 -10
  33. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_time_spec.rb +20 -16
  34. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/float_spec.rb +17 -13
  35. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/hash_spec.rb +1 -1
  36. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/integer_spec.rb +14 -14
  37. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/rational_spec.rb +16 -12
  38. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/string_spec.rb +24 -12
  39. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/time_spec.rb +20 -16
  40. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/type_options_spec.rb +4 -4
  41. data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/wrappers/array_spec.rb +6 -6
  42. data/lib/ree_lib/packages/ree_roda/package/ree_roda/app.rb +3 -2
  43. data/lib/ree_lib/packages/ree_roda/spec/ree_roda/app_spec.rb +28 -0
  44. data/lib/ree_lib/version.rb +1 -1
  45. 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
- expect { mapper.serialize({ time: Object.new }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
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
- expect { mapper.cast({ time: Object.new }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
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
- expect { mapper.db_dump({ time: Object.new }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
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
- expect { mapper.db_load({ time: Object.new }) }.to raise_error(ReeMapper::TypeError, "`time` should be a time")
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("ree_mapper/errors/type_error")
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?(ReeMapper::TypeError) || e.is_a?(ReeMapper::CoercionError)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.84"
4
+ VERSION = "1.0.86"
5
5
  end
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.84
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: 2023-12-12 00:00:00.000000000 Z
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