grape-swagger-entity 0.5.3 → 0.5.5

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: add308a25b9c529ea00b8527b3b435738f226a9af7c25e95aac0725c672b714b
4
- data.tar.gz: a8e5cc48c165535bc489c8cff7879e5ad6cf4650996a8f9838a073bd1bfc3840
3
+ metadata.gz: 2acdf9214576f2fd49186e8bf6163382daa19b6842dc08033567d2427aaa5bcc
4
+ data.tar.gz: 50fa87da0ef94dff6128cea9b5178d3455c831b87457768ea8140bd14f8fc001
5
5
  SHA512:
6
- metadata.gz: 2fd8fc5aff26713b93abf4290ce6c56054c3e497a860c9873c8a6675b1769807f6a236cdbe62961fae6891a4667fbd250579db4f2c5c82ef2875713d8917e90c
7
- data.tar.gz: 54248e88317f33f1a12d2f7ede6b5f897e2b3e5ea21927b1fc4a078358a46cb6d36abff7455cebc11d066c9fd75421b044686dfb1417d76312953f9b6de96b54
6
+ metadata.gz: 6f7f9ef5026e54fd99035d38e84c358cc8446a117aadeb486f900775ff15a83bc3b5aaa7c0f3c27afbde6a870ec77a3e8e6baf9fcc1c13df024826f1164aecf8
7
+ data.tar.gz: 89b9bcb8ef9693861bf2042f70147f611b9500c0dda4db5cac5b08af03a156281be02ec14afd71722d23fa498fec28308f1d638997bae066f3db4c07c7d98397
@@ -10,7 +10,7 @@ jobs:
10
10
  name: RuboCop
11
11
  runs-on: ubuntu-latest
12
12
  steps:
13
- - uses: actions/checkout@v3
13
+ - uses: actions/checkout@v4
14
14
 
15
15
  - name: Set up Ruby
16
16
  uses: ruby/setup-ruby@v1
@@ -24,16 +24,16 @@ jobs:
24
24
 
25
25
  test:
26
26
  env:
27
- GRAPE_ENTITY: 0.8.0
27
+ GRAPE_ENTITY: 1.0.0
28
28
 
29
29
  runs-on: ubuntu-latest
30
30
  strategy:
31
31
  fail-fast: false
32
32
  matrix:
33
- ruby-version: ['3.0', '3.1', '3.2']
33
+ ruby-version: ['3.0', '3.1', '3.2', '3.3']
34
34
 
35
35
  steps:
36
- - uses: actions/checkout@v3
36
+ - uses: actions/checkout@v4
37
37
  - name: Set up Ruby
38
38
  uses: ruby/setup-ruby@v1
39
39
  with:
data/.rubocop_todo.yml CHANGED
@@ -58,6 +58,7 @@ Metrics/BlockLength:
58
58
  # Configuration parameters: CountComments, Max, CountAsOne.
59
59
  Metrics/ClassLength:
60
60
  Exclude:
61
+ - 'lib/grape-swagger/entity/attribute_parser.rb'
61
62
  - 'lib/grape-swagger/entity/parser.rb'
62
63
 
63
64
  # Offense count: 2
data/CHANGELOG.md CHANGED
@@ -1,12 +1,20 @@
1
- ### Next
1
+ ### 0.5.5 (2024/09/09)
2
+
3
+ #### Fixes
4
+
5
+ * [#72](https://github.com/ruby-grape/grape-swagger-entity/pull/72): Ensure inherited nested exposures are merged - [@pirhoo](https://github.com/pirhoo).
6
+ * [#71](https://github.com/ruby-grape/grape-swagger-entity/pull/71): Fix regression for enum values in array attributes - [@Jell](https://github.com/Jell).
7
+
8
+ ### 0.5.4 (2024/04/19)
2
9
 
3
10
  #### Features
4
11
 
5
- * Your contribution here.
12
+ * [#69](https://github.com/ruby-grape/grape-swagger-entity/pull/69): Add support for minimum and maximum - [@storey](https://github.com/storey).
6
13
 
7
14
  #### Fixes
8
15
 
9
- * Your contribution here.
16
+ * [#67](https://github.com/ruby-grape/grape-swagger-entity/pull/67): Various build updates - [@mscrivo](https://github.com/mscrivo).
17
+ * [#68](https://github.com/ruby-grape/grape-swagger-entity/pull/68): Properly render `example` for array exposure done using another entity - [@magni-](https://github.com/magni-).
10
18
 
11
19
  ### 0.5.3 (2024/02/02)
12
20
 
data/Gemfile CHANGED
@@ -21,7 +21,7 @@ end
21
21
  gem 'grape-swagger', git: 'https://github.com/ruby-grape/grape-swagger.git'
22
22
 
23
23
  group :test do
24
- gem 'grape-entity', ENV.fetch('GRAPE_ENTITY', '0.6.1')
24
+ gem 'grape-entity', ENV.fetch('GRAPE_ENTITY', '1.0.0')
25
25
  gem 'ruby-grape-danger', '~> 0.2.1', require: false
26
26
  gem 'simplecov', require: false
27
27
  end
data/RELEASING.md CHANGED
@@ -29,7 +29,7 @@ Remove the line with "Your contribution here.", since there will be no more cont
29
29
  Commit your changes.
30
30
 
31
31
  ```
32
- git add CHANGELOG.md lib/grape-swagger-entity/version.rb
32
+ git add CHANGELOG.md lib/grape-swagger/entity/version.rb CHANGELOG.md
33
33
  git commit -m "Preparing for release, 0.1.1."
34
34
  git push origin master
35
35
  ```
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  s.require_paths = ['lib']
21
21
 
22
- s.required_ruby_version = '>= 2.4'
23
- s.add_runtime_dependency 'grape-entity', '>= 0.6.0'
24
- s.add_runtime_dependency 'grape-swagger', '>= 1.2.0'
22
+ s.required_ruby_version = '>= 3.0'
23
+ s.add_runtime_dependency 'grape-entity', '~> 1'
24
+ s.add_runtime_dependency 'grape-swagger', '~> 2'
25
25
  s.metadata['rubygems_mfa_required'] = 'true'
26
26
  end
@@ -10,41 +10,26 @@ module GrapeSwagger
10
10
  end
11
11
 
12
12
  def call(entity_options)
13
- documentation = entity_options[:documentation]
14
- entity_model = model_from(entity_options)
15
-
16
- if entity_model
17
- name = GrapeSwagger::Entity::Helper.model_name(entity_model, endpoint)
18
-
19
- entity_model_type = entity_model_type(name, entity_options)
20
- return entity_model_type unless documentation
21
-
22
- add_extension_documentation(entity_model_type, documentation)
23
- add_array_documentation(entity_model_type, documentation) if documentation[:is_array]
24
-
25
- entity_model_type
26
- else
27
- param = data_type_from(entity_options)
28
- return param unless documentation
13
+ param = if (entity_model = model_from(entity_options))
14
+ name = GrapeSwagger::Entity::Helper.model_name(entity_model, endpoint)
15
+ entity_model_type(name, entity_options)
16
+ else
17
+ data_type_from(entity_options)
18
+ end
29
19
 
30
- if (values = documentation[:values]) && values.is_a?(Array)
31
- param[:enum] = values
32
- end
20
+ documentation = entity_options[:documentation]
21
+ return param if documentation.nil?
33
22
 
34
- if documentation[:is_array]
35
- param = { type: :array, items: param }
36
- add_array_documentation(param, documentation)
37
- end
23
+ add_array_documentation(param, documentation) if documentation[:is_array]
38
24
 
39
- add_attribute_sample(param, documentation, :default)
40
- add_attribute_sample(param, documentation, :example)
25
+ add_attribute_sample(param, documentation, :default)
26
+ add_attribute_sample(param, documentation, :example)
41
27
 
42
- add_attribute_documentation(param, documentation)
28
+ add_attribute_documentation(param, documentation)
43
29
 
44
- add_extension_documentation(param, documentation)
45
- add_discriminator_extension(param, documentation)
46
- param
47
- end
30
+ add_extension_documentation(param, documentation)
31
+ add_discriminator_extension(param, documentation)
32
+ param
48
33
  end
49
34
 
50
35
  private
@@ -73,13 +58,22 @@ module GrapeSwagger
73
58
  !type == Array
74
59
  end
75
60
 
76
- def data_type_from(documentation)
77
- documented_type = documentation[:type]
78
- documented_type ||= documentation[:documentation] && documentation[:documentation][:type]
61
+ def data_type_from(entity_options)
62
+ documentation = entity_options[:documentation] || {}
63
+ documented_type = entity_options[:type] || documentation[:type]
79
64
 
80
65
  data_type = GrapeSwagger::DocMethods::DataType.call(documented_type)
81
66
 
82
- document_data_type(documentation[:documentation], data_type)
67
+ documented_data_type = document_data_type(documentation, data_type)
68
+
69
+ if documentation[:is_array]
70
+ {
71
+ type: :array,
72
+ items: documented_data_type
73
+ }
74
+ else
75
+ documented_data_type
76
+ end
83
77
  end
84
78
 
85
79
  def document_data_type(documentation, data_type)
@@ -89,7 +83,12 @@ module GrapeSwagger
89
83
  else
90
84
  { type: data_type }
91
85
  end
92
- type[:format] = documentation[:format] if documentation&.key?(:format)
86
+
87
+ type[:format] = documentation[:format] if documentation.key?(:format)
88
+
89
+ if (values = documentation[:values]) && values.is_a?(Array)
90
+ type[:enum] = values
91
+ end
93
92
 
94
93
  type
95
94
  end
@@ -117,6 +116,15 @@ module GrapeSwagger
117
116
  end
118
117
 
119
118
  def add_attribute_documentation(param, documentation)
119
+ param[:minimum] = documentation[:minimum] if documentation.key?(:minimum)
120
+ param[:maximum] = documentation[:maximum] if documentation.key?(:maximum)
121
+
122
+ values = documentation[:values]
123
+ if values&.is_a?(Range)
124
+ param[:minimum] = values.begin if values.begin.is_a?(Numeric)
125
+ param[:maximum] = values.end if values.end.is_a?(Numeric)
126
+ end
127
+
120
128
  param[:minLength] = documentation[:min_length] if documentation.key?(:min_length)
121
129
  param[:maxLength] = documentation[:max_length] if documentation.key?(:max_length)
122
130
  end
@@ -101,19 +101,22 @@ module GrapeSwagger
101
101
  end
102
102
 
103
103
  def parse_nested(entity_name, entity_options, parent_model = nil)
104
- nested_entity = if parent_model.nil?
105
- model.root_exposures.find_by(entity_name)
106
- else
107
- parent_model.nested_exposures.find_by(entity_name)
108
- end
109
-
110
- params = nested_entity.nested_exposures.each_with_object({}) do |value, memo|
104
+ nested_entities = if parent_model.nil?
105
+ model.root_exposures.select_by(entity_name)
106
+ else
107
+ parent_model.nested_exposures.select_by(entity_name)
108
+ end
109
+
110
+ params = nested_entities
111
+ .map(&:nested_exposures)
112
+ .flatten
113
+ .each_with_object({}) do |value, memo|
111
114
  memo[value.attribute] = value.send(:options)
112
115
  end
113
116
 
114
- properties, required = parse_grape_entity_params(params, nested_entity)
115
- is_a_collection = entity_options[:documentation].is_a?(Hash) &&
116
- entity_options[:documentation][:type].to_s.casecmp('array').zero?
117
+ properties, required = parse_grape_entity_params(params, nested_entities.last)
118
+ documentation = entity_options[:documentation]
119
+ is_a_collection = documentation.is_a?(Hash) && documentation[:type].to_s.casecmp('array').zero?
117
120
 
118
121
  if is_a_collection
119
122
  {
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GrapeSwagger
4
4
  module Entity
5
- VERSION = '0.5.3'
5
+ VERSION = '0.5.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-swagger-entity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Zaitsev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-02 00:00:00.000000000 Z
11
+ date: 2024-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape-entity
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.0
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.6.0
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: grape-swagger
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.0
33
+ version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.2.0
40
+ version: '2'
41
41
  description:
42
42
  email:
43
43
  - kirik910@gmail.com
@@ -80,14 +80,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '2.4'
83
+ version: '3.0'
84
84
  required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  requirements: []
90
- rubygems_version: 3.5.3
90
+ rubygems_version: 3.3.7
91
91
  signing_key:
92
92
  specification_version: 4
93
93
  summary: Grape swagger adapter to support grape-entity object parsing