rspec-openapi 0.21.4 → 0.21.5
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 +18 -4
- 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: b35d6193603f213ab605629e833a56827da2cc4071a9bde884ed7f67ae257946
|
|
4
|
+
data.tar.gz: d3f5d1b55e242ccde842aca000aebdcff950fac29d11197cdd2002bedd9f6976
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c30cc46860494d67aed4b1eb9ea11db58b77bbfec31f3d1fef1f0723aad7a16775ed30f4b874331eec6ed26a3238522f8ee018d0ae252fe769a78de3b6b5eb46
|
|
7
|
+
data.tar.gz: e50cf253d00c8d4c11d6abe1793c32b8a5eec594dca37d8fdeb48969a3e4c13c79b40e8a034f3ca0f4cec2909e0c48d5d8082131c9109ffe9015ddc0ec5bdf75
|
|
@@ -273,7 +273,6 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
|
|
|
273
273
|
unique_types = property_variations.map { |p| p[:type] }.compact.uniq
|
|
274
274
|
|
|
275
275
|
if unique_types.size > 1
|
|
276
|
-
# Different types detected - create oneOf
|
|
277
276
|
unique_props = property_variations.map { |p| p.reject { |k, _| k == :nullable } }.uniq
|
|
278
277
|
merged_schema[:properties][key] = { oneOf: unique_props }
|
|
279
278
|
else
|
|
@@ -315,7 +314,9 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
|
|
|
315
314
|
nullable_only = all_prop_variations.select { |p| p && p.keys == [:nullable] }
|
|
316
315
|
prop_variations = all_prop_variations.select { |p| p && p.keys != [:nullable] }.compact
|
|
317
316
|
|
|
318
|
-
has_nullable = all_prop_variations.any?
|
|
317
|
+
has_nullable = all_prop_variations.any? do |v|
|
|
318
|
+
v.nil? || (v.is_a?(Hash) && v[:nullable] == true)
|
|
319
|
+
end || nullable_only.any?
|
|
319
320
|
|
|
320
321
|
if prop_variations.empty? && has_nullable
|
|
321
322
|
merged[:properties][key] = { nullable: true }
|
|
@@ -324,8 +325,21 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
|
|
|
324
325
|
merged[:properties][key][:nullable] = true if has_nullable
|
|
325
326
|
elsif prop_variations.size > 1
|
|
326
327
|
prop_types = prop_variations.map { |p| p[:type] }.compact.uniq
|
|
327
|
-
|
|
328
|
-
|
|
328
|
+
has_one_of = prop_variations.any? { |p| p.key?(:oneOf) }
|
|
329
|
+
|
|
330
|
+
if has_one_of
|
|
331
|
+
all_options = []
|
|
332
|
+
prop_variations.each do |prop|
|
|
333
|
+
clean_prop = prop.reject { |k, _| k == :nullable }
|
|
334
|
+
if clean_prop.key?(:oneOf)
|
|
335
|
+
all_options.concat(clean_prop[:oneOf])
|
|
336
|
+
else
|
|
337
|
+
all_options << clean_prop unless clean_prop.empty?
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
all_options.uniq!
|
|
341
|
+
merged[:properties][key] = { oneOf: all_options }
|
|
342
|
+
elsif prop_types.size == 1
|
|
329
343
|
# Only recursively merge if it's an object type
|
|
330
344
|
merged[:properties][key] = if prop_types.first == 'object'
|
|
331
345
|
build_merged_schema_from_variations(prop_variations)
|
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.5
|
|
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.5
|
|
114
114
|
rubygems_mfa_required: 'true'
|
|
115
115
|
rdoc_options: []
|
|
116
116
|
require_paths:
|