ree_lib 1.0.21 → 1.0.22

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: f6ae0f9daf43194e577174cd9d39c1516e301a5c53b05f0ab5a3467b0cb4b704
4
- data.tar.gz: e333d78c1cf0f28bee7797be4b2718898f094c431a5abec04256f93e9ff6e450
3
+ metadata.gz: 6a07548e9d6406a91f8b9ba8781ac7a42add43a8283225fec7147cebceaf3135
4
+ data.tar.gz: 277351000a4834065e02a5011966726d3121fac4451ec0dcfdb8d41a6ca2316c
5
5
  SHA512:
6
- metadata.gz: f7282239063aebfcf7c1c6552980ef933ac48efc47cc28afdf28b65ad82913af52c71f6b8b0f45f733967633033235e2e82856d95b91b9935ed98b13c4656199
7
- data.tar.gz: 4eae3f07e6a0808da7f32c791ff06ec9c414f7cb6c818ec845bd79b7825983e58a0baec5f63a403d7ae660ebbea07fdc9b1873d6ed34cdd0424bc212d6943fd9
6
+ metadata.gz: 0d241902046d98abbe9affdecac2ed8d4c8ab588b078413a611b32b6b3054ae400296a96605a54ed7354a33106a5651d02bae1d6e7ef464570bac7c6cd11b897
7
+ data.tar.gz: d8f809aec0100f1727c0d8e411a6a1f192c4120b7e60dcdb4c00fea1f1503137cb368a1064aa3e74e0d25d94354090b4f2200ec1e0337074493bf08bf837a57c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree_lib (1.0.21)
4
+ ree_lib (1.0.22)
5
5
  binding_of_caller (~> 1.0.0)
6
6
  i18n (~> 1.12.0)
7
7
  loofah (~> 2.18.0)
@@ -35,32 +35,34 @@ GEM
35
35
  loofah (2.18.0)
36
36
  crass (~> 1.0.2)
37
37
  nokogiri (>= 1.5.9)
38
- msgpack (1.5.4)
39
- nokogiri (1.13.8-x86_64-linux)
38
+ msgpack (1.6.0)
39
+ nokogiri (1.13.9-x86_64-darwin)
40
+ racc (~> 1.4)
41
+ nokogiri (1.13.9-x86_64-linux)
40
42
  racc (~> 1.4)
41
43
  oj (3.13.21)
42
- pg (1.4.3)
44
+ pg (1.4.4)
43
45
  public_suffix (5.0.0)
44
46
  racc (1.6.0)
45
47
  rainbow (3.1.1)
46
48
  rake (13.0.6)
47
- ree (1.0.5)
49
+ ree (1.0.6)
48
50
  commander (~> 4.6.0)
49
51
  rexml (3.2.5)
50
- rollbar (3.3.1)
52
+ rollbar (3.3.2)
51
53
  rspec (3.11.0)
52
54
  rspec-core (~> 3.11.0)
53
55
  rspec-expectations (~> 3.11.0)
54
56
  rspec-mocks (~> 3.11.0)
55
57
  rspec-core (3.11.0)
56
58
  rspec-support (~> 3.11.0)
57
- rspec-expectations (3.11.0)
59
+ rspec-expectations (3.11.1)
58
60
  diff-lcs (>= 1.2.0, < 2.0)
59
61
  rspec-support (~> 3.11.0)
60
- rspec-mocks (3.11.1)
62
+ rspec-mocks (3.11.2)
61
63
  diff-lcs (>= 1.2.0, < 2.0)
62
64
  rspec-support (~> 3.11.0)
63
- rspec-support (3.11.0)
65
+ rspec-support (3.11.1)
64
66
  sequel (5.58.0)
65
67
  sqlite3 (1.4.4)
66
68
  timecop (0.9.5)
@@ -36,7 +36,7 @@ class ReeSwagger::BuildParameters
36
36
  name: field.name_as_str,
37
37
  in: is_path_param ? 'path' : 'query',
38
38
  required: is_path_param || !field.optional,
39
- schema: build_request_body_schema(field.type) || {}
39
+ schema: build_request_body_schema(field.type, [], [field.fields_filter]) || {}
40
40
  }
41
41
 
42
42
  schema[:style] = 'deepObject' if field.type.type.nil?
@@ -9,9 +9,10 @@ class ReeSwagger::BuildRequestBodySchema
9
9
 
10
10
  contract(
11
11
  ReeMapper::Mapper,
12
- ArrayOf[Symbol] => Nilor[Hash]
12
+ ArrayOf[Symbol],
13
+ ArrayOf[ReeMapper::FieldsFilter] => Nilor[Hash]
13
14
  )
14
- def call(mapper, path_params = [])
15
+ def call(mapper, path_params = [], fields_filters = [])
15
16
  if mapper.type
16
17
  return get_caster_definition(mapper.type, method(:call).to_proc)
17
18
  end
@@ -19,13 +20,20 @@ class ReeSwagger::BuildRequestBodySchema
19
20
  required_fields = []
20
21
 
21
22
  properties = mapper.fields.each_with_object({}) do |(_name, field), acc|
23
+ next unless fields_filters.all? { _1.allow?(field.name) }
24
+
22
25
  next if path_params.include?(field.name)
23
26
 
24
27
  swagger_field = {}
25
28
 
26
29
  required_fields << field.name.to_s if !field.optional
27
30
  field_mapper = field.type
28
- swagger_type = call(field_mapper)
31
+
32
+ nested_fields_filters = fields_filters.map { _1.filter_for(field.name) }
33
+ nested_fields_filters += [field.fields_filter]
34
+
35
+ swagger_type = call(field_mapper, [], nested_fields_filters)
36
+
29
37
  swagger_field.merge!(swagger_type) if swagger_type
30
38
 
31
39
  description = field.doc
@@ -7,17 +7,24 @@ class ReeSwagger::BuildSerializerSchema
7
7
  link :get_serializer_definition
8
8
  end
9
9
 
10
- contract(ReeMapper::Mapper => Nilor[Hash])
11
- def call(mapper)
10
+ contract(ReeMapper::Mapper, ArrayOf[ReeMapper::FieldsFilter] => Nilor[Hash])
11
+ def call(mapper, fields_filters = [])
12
12
  if mapper.type
13
13
  return get_serializer_definition(mapper.type, method(:call).to_proc)
14
14
  end
15
15
 
16
16
  properties = mapper.fields.each_with_object({}) do |(_name, field), acc|
17
+ next unless fields_filters.all? { _1.allow?(field.name) }
18
+
17
19
  swagger_field = {}
18
20
 
19
21
  field_mapper = field.type
20
- swagger_type = call(field_mapper)
22
+
23
+ nested_fields_filters = fields_filters.map { _1.filter_for(field.name) }
24
+ nested_fields_filters += [field.fields_filter]
25
+
26
+ swagger_type = call(field_mapper, nested_fields_filters)
27
+
21
28
  swagger_field.merge!(swagger_type) if swagger_type
22
29
 
23
30
  description = field.doc
@@ -21,6 +21,10 @@
21
21
  {
22
22
  "arg": "path_params",
23
23
  "type": "ArrayOf[Symbol]"
24
+ },
25
+ {
26
+ "arg": "fields_filters",
27
+ "type": "ArrayOf[ReeMapper::FieldsFilter]"
24
28
  }
25
29
  ]
26
30
  }
@@ -17,6 +17,10 @@
17
17
  {
18
18
  "arg": "mapper",
19
19
  "type": "ReeMapper::Mapper"
20
+ },
21
+ {
22
+ "arg": "fields_filters",
23
+ "type": "ArrayOf[ReeMapper::FieldsFilter]"
20
24
  }
21
25
  ]
22
26
  }
@@ -51,23 +51,16 @@ RSpec.describe :build_endpoint_schema do
51
51
  _tag_caster = mapper_factory.call(register_as: :tag).use(:cast) do
52
52
  string :name
53
53
  string :value
54
+ string :excluded
54
55
  end
55
56
 
56
57
  caster = mapper_factory.call.use(:cast) do
57
58
  integer :id
58
59
  string :name
59
- tag :tag
60
+ tag :tag, except: [:excluded]
60
61
  locales :locale
61
62
  end
62
63
 
63
- file_caster = mapper_factory.call.use(:cast) do
64
- integer :id
65
- end
66
-
67
- file_serializer = mapper_factory.call.use(:serialize) do
68
- string :data
69
- end
70
-
71
64
  schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
72
65
  method: :post,
73
66
  respond_to: :json,
@@ -95,20 +88,6 @@ RSpec.describe :build_endpoint_schema do
95
88
  ]
96
89
  ))
97
90
 
98
- csv_schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
99
- method: :get,
100
- respond_to: :csv,
101
- authenticate: false,
102
- path: '/files/:id',
103
- sections: ["files"],
104
- caster: file_caster,
105
- serializer: file_serializer,
106
- response_status: 200,
107
- description: "file",
108
- summary: "file summary",
109
- errors: []
110
- ))
111
-
112
91
  expect(schema).to eq(ReeSwagger::PathDto.new(
113
92
  path: '/versions/{id}',
114
93
  schema: {
@@ -174,6 +153,116 @@ RSpec.describe :build_endpoint_schema do
174
153
  }
175
154
  }
176
155
  ))
156
+ }
157
+
158
+ it {
159
+ serializer = mapper_factory.call.use(:serialize) do
160
+ integer :id
161
+ end
162
+
163
+ _tag_caster = mapper_factory.call(register_as: :tag).use(:cast) do
164
+ string :name
165
+ string :value
166
+ string :excluded
167
+ end
168
+
169
+ caster = mapper_factory.call.use(:cast) do
170
+ integer :id
171
+ string :name
172
+ tag :tag, except: [:excluded]
173
+ end
174
+
175
+ schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
176
+ method: :get,
177
+ respond_to: :json,
178
+ authenticate: false,
179
+ path: '/versions/:id',
180
+ sections: ["versions"],
181
+ caster: caster,
182
+ serializer: serializer,
183
+ response_status: 200,
184
+ description: "description",
185
+ summary: "summary",
186
+ errors: []
187
+ ))
188
+
189
+ expect(schema).to eq(ReeSwagger::PathDto.new(
190
+ path: '/versions/{id}',
191
+ schema: {
192
+ get: {
193
+ parameters: [
194
+ {
195
+ name: 'id',
196
+ in: 'path',
197
+ required: true,
198
+ schema: { type: 'integer' }
199
+ },
200
+ {
201
+ name: 'name',
202
+ in: 'query',
203
+ required: true,
204
+ schema: { type: 'string' }
205
+ },
206
+ {
207
+ name: 'tag',
208
+ in: 'query',
209
+ required: true,
210
+ style: 'deepObject',
211
+ schema: {
212
+ type: 'object',
213
+ properties: {
214
+ name: { type: 'string' },
215
+ value: { type: 'string' }
216
+ },
217
+ required: ['name', 'value']
218
+ }
219
+ }
220
+ ],
221
+ responses: {
222
+ 200 => {
223
+ description: '',
224
+ content: {
225
+ :'application/json' => {
226
+ schema: {
227
+ type: 'object',
228
+ properties: {
229
+ id: { type: 'integer' }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ },
236
+ summary: "summary",
237
+ description: "description",
238
+ tags: ["versions"]
239
+ }
240
+ }
241
+ ))
242
+ }
243
+
244
+ it {
245
+ file_caster = mapper_factory.call.use(:cast) do
246
+ integer :id
247
+ end
248
+
249
+ file_serializer = mapper_factory.call.use(:serialize) do
250
+ string :data
251
+ end
252
+
253
+ csv_schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
254
+ method: :get,
255
+ respond_to: :csv,
256
+ authenticate: false,
257
+ path: '/files/:id',
258
+ sections: ["files"],
259
+ caster: file_caster,
260
+ serializer: file_serializer,
261
+ response_status: 200,
262
+ description: "file",
263
+ summary: "file summary",
264
+ errors: []
265
+ ))
177
266
 
178
267
  expect(csv_schema).to eq(ReeSwagger::PathDto.new(
179
268
  path: '/files/{id}',
@@ -25,6 +25,17 @@ RSpec.describe :build_serializer_schema do
25
25
  }
26
26
 
27
27
  let(:mapper) {
28
+ nested_partial_mapper = mapper_factory.call(register_as: :nested_partial).use(:serialize) do
29
+ string :included
30
+ string :excepted
31
+ string :nested_excepted
32
+ end
33
+
34
+ partial_mapper = mapper_factory.call(register_as: :partial).use(:serialize) do
35
+ string :excepted
36
+ nested_partial :nested_partial_value, except: [:excepted]
37
+ end
38
+
28
39
  setting_mapper = mapper_factory.call(register_as: :setting).use(:serialize) do
29
40
  string :name
30
41
  string :value
@@ -55,6 +66,8 @@ RSpec.describe :build_serializer_schema do
55
66
  integer :test_null, null: true
56
67
 
57
68
  unregistered_type :test_unregistered_type
69
+
70
+ partial :partial_value, except: [:excepted, nested_partial_value: [:nested_excepted]]
58
71
  end
59
72
  }
60
73
 
@@ -102,7 +115,18 @@ RSpec.describe :build_serializer_schema do
102
115
  type: 'integer',
103
116
  nullable: true
104
117
  },
105
- test_unregistered_type: {}
118
+ test_unregistered_type: {},
119
+ partial_value: {
120
+ type: 'object',
121
+ properties: {
122
+ nested_partial_value: {
123
+ type: 'object',
124
+ properties: {
125
+ included: { type: 'string' }
126
+ }
127
+ }
128
+ }
129
+ },
106
130
  }
107
131
  }
108
132
  )
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.21"
4
+ VERSION = "1.0.22"
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.21
4
+ version: 1.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-07 00:00:00.000000000 Z
11
+ date: 2022-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree