rspec-openapi 0.21.3 → 0.21.4
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/lib/rspec/openapi/schema_builder.rb +14 -8
- data/lib/rspec/openapi/schema_merger.rb +6 -1
- data/lib/rspec/openapi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 10130361a7c2ee93e28be624decd6662215eaeb981a28981f02e5f1c95e82559
|
|
4
|
+
data.tar.gz: f32bbbe9f13c4a2b454ba4138b7c4825ca582f2ad32af73318c0a9c0c3d81147
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad8029bb23d7c9ec5b2a6c6898d82b906a061806e93912b166e6ab6b5464263dc936a3bbe86e821eea01a3d60e49f379327a966d8d1986e99258997f9132823e
|
|
7
|
+
data.tar.gz: 310ab5b4ff9b5a63555881679e77f0e1e829d3e1b296df79170db0915441bb70f5c8ebc553444574c93de80e6a7f510c2f26622c9df1052848dfc789df87d1f6
|
|
@@ -272,15 +272,21 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
|
|
|
272
272
|
else
|
|
273
273
|
unique_types = property_variations.map { |p| p[:type] }.compact.uniq
|
|
274
274
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
merged_schema[:properties][key][:items] = build_merged_schema_from_variations(items_variations)
|
|
280
|
-
when 'object'
|
|
281
|
-
merged_schema[:properties][key] = build_merged_schema_from_variations(property_variations)
|
|
275
|
+
if unique_types.size > 1
|
|
276
|
+
# Different types detected - create oneOf
|
|
277
|
+
unique_props = property_variations.map { |p| p.reject { |k, _| k == :nullable } }.uniq
|
|
278
|
+
merged_schema[:properties][key] = { oneOf: unique_props }
|
|
282
279
|
else
|
|
283
|
-
|
|
280
|
+
case unique_types.first
|
|
281
|
+
when 'array'
|
|
282
|
+
merged_schema[:properties][key] = { type: 'array' }
|
|
283
|
+
items_variations = property_variations.map { |p| p[:items] }.compact
|
|
284
|
+
merged_schema[:properties][key][:items] = build_merged_schema_from_variations(items_variations)
|
|
285
|
+
when 'object'
|
|
286
|
+
merged_schema[:properties][key] = build_merged_schema_from_variations(property_variations)
|
|
287
|
+
else
|
|
288
|
+
merged_schema[:properties][key] = property_variations.first.dup
|
|
289
|
+
end
|
|
284
290
|
end
|
|
285
291
|
end
|
|
286
292
|
|
|
@@ -25,7 +25,12 @@ class << RSpec::OpenAPI::SchemaMerger = Object.new
|
|
|
25
25
|
|
|
26
26
|
spec.each do |key, value|
|
|
27
27
|
if base[key].is_a?(Hash) && value.is_a?(Hash)
|
|
28
|
-
|
|
28
|
+
# If the new value has oneOf, replace the entire value instead of merging
|
|
29
|
+
if value.key?(:oneOf)
|
|
30
|
+
base[key] = value
|
|
31
|
+
else
|
|
32
|
+
merge_schema!(base[key], value) unless base[key].key?(:$ref)
|
|
33
|
+
end
|
|
29
34
|
elsif base[key].is_a?(Array) && value.is_a?(Array)
|
|
30
35
|
# parameters need to be merged as if `name` and `in` were the Hash keys.
|
|
31
36
|
merge_arrays(base, key, value)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rspec-openapi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.21.
|
|
4
|
+
version: 0.21.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Takashi Kokubun
|
|
@@ -110,7 +110,7 @@ licenses:
|
|
|
110
110
|
metadata:
|
|
111
111
|
homepage_uri: https://github.com/exoego/rspec-openapi
|
|
112
112
|
source_code_uri: https://github.com/exoego/rspec-openapi
|
|
113
|
-
changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.21.
|
|
113
|
+
changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.21.4
|
|
114
114
|
rubygems_mfa_required: 'true'
|
|
115
115
|
rdoc_options: []
|
|
116
116
|
require_paths:
|