rspec-openapi 0.30.1 → 0.32.0
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/README.md +2 -2
- data/lib/rspec/openapi/record_builder.rb +12 -1
- data/lib/rspec/openapi/schema_builder.rb +12 -6
- data/lib/rspec/openapi/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 64afa135a6f5a64d96bf01dbf50457b98964a0875a21f0e85c159dc16cbd6a11
|
|
4
|
+
data.tar.gz: '048bab9ffc8d6c6876a3c2aeb03e7cf68ba992db9da6953d50dfef9106fe5acd'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9967fb54526fc7d743f4ba7d1de62c5a65b8a47ccc4350a55c575eef27d38110dfcc4ff2614fc02664d4eb622fb302422e1352cc2bbdb28e955989bc051609b7
|
|
7
|
+
data.tar.gz: b407e68dee10bf81a9b4ced14e8b767ce9099fd3ebedbecb67f43fd0f994fb06fb10868b422ba0fef9c6d4bbeaca2c06db5f58758f8ac09953c608949a6574ff
|
data/README.md
CHANGED
|
@@ -897,7 +897,7 @@ responses:
|
|
|
897
897
|
'400': { ... }
|
|
898
898
|
```
|
|
899
899
|
|
|
900
|
-
Mixing `:single` (some tests) with `:multiple` (others) on the same endpoint also works for `requestBody` -
|
|
900
|
+
Mixing `:single` (some tests) with `:multiple` (others) on the same endpoint also works for `requestBody` -
|
|
901
901
|
the merger up-converts the singular `example:` into the `examples:` map automatically
|
|
902
902
|
(see [Merge Behavior with Mixed Modes](#merge-behavior-with-mixed-modes) below).
|
|
903
903
|
|
|
@@ -997,7 +997,7 @@ Existing RSpec plugins which have OpenAPI integration:
|
|
|
997
997
|
## Acknowledgements
|
|
998
998
|
|
|
999
999
|
* Heavily inspired by [r7kamura/autodoc](https://github.com/r7kamura/autodoc)
|
|
1000
|
-
*
|
|
1000
|
+
* Originally created by [k0kubun](https://github.com/k0kubun) and the ownership was transferred
|
|
1001
1001
|
to [exoego](https://github.com/exoego) in 2022-11-29.
|
|
1002
1002
|
|
|
1003
1003
|
## Releasing
|
|
@@ -79,8 +79,19 @@ class << RSpec::OpenAPI::RecordBuilder = Object.new
|
|
|
79
79
|
# because ActionController::ParamsWrapper overwrites request_parameters
|
|
80
80
|
def raw_request_params(request)
|
|
81
81
|
original = request.delete_header('action_dispatch.request.request_parameters')
|
|
82
|
-
request.request_parameters
|
|
82
|
+
unwrap_json_root(request.request_parameters)
|
|
83
83
|
ensure
|
|
84
84
|
request.set_header('action_dispatch.request.request_parameters', original)
|
|
85
85
|
end
|
|
86
|
+
|
|
87
|
+
# Rails' default JSON parser wraps a body that isn't a Hash - a top-level array,
|
|
88
|
+
# string, number, and so on - as `{ _json: <body> }`, so `request_parameters`
|
|
89
|
+
# stops reflecting what the client actually sent.
|
|
90
|
+
# See ActionDispatch::Http::Parameters::DEFAULT_PARSERS
|
|
91
|
+
def unwrap_json_root(params)
|
|
92
|
+
return params unless params.is_a?(Hash) && params.size == 1
|
|
93
|
+
|
|
94
|
+
key, value = params.first
|
|
95
|
+
key.to_s == '_json' ? value : params
|
|
96
|
+
end
|
|
86
97
|
end
|
|
@@ -303,7 +303,7 @@ class << RSpec::OpenAPI::SchemaBuilder
|
|
|
303
303
|
def build_example(value)
|
|
304
304
|
return nil if value.nil?
|
|
305
305
|
|
|
306
|
-
|
|
306
|
+
adjust_value(value.dup)
|
|
307
307
|
end
|
|
308
308
|
|
|
309
309
|
def adjust_params(hash)
|
|
@@ -331,10 +331,9 @@ class << RSpec::OpenAPI::SchemaBuilder
|
|
|
331
331
|
alias normalize_content_disposition normalize_content_type
|
|
332
332
|
|
|
333
333
|
def build_array_items_schema(array, ctx)
|
|
334
|
-
return {} if array.empty?
|
|
335
|
-
|
|
336
334
|
schemas = array.map { |item| build_property(item, ctx) }
|
|
337
|
-
return schemas.first if schemas.size == 1
|
|
335
|
+
return schemas.first if schemas.size == 1
|
|
336
|
+
return merge_non_object_item_variations(schemas) unless array.all?(Hash)
|
|
338
337
|
|
|
339
338
|
merged = schemas.first.dup
|
|
340
339
|
merged[:properties] = merge_property_variations(schemas, allow_recursive_merge: false)
|
|
@@ -342,9 +341,16 @@ class << RSpec::OpenAPI::SchemaBuilder
|
|
|
342
341
|
merged
|
|
343
342
|
end
|
|
344
343
|
|
|
345
|
-
def
|
|
346
|
-
|
|
344
|
+
def merge_non_object_item_variations(schemas)
|
|
345
|
+
nullable_only = ->(schema) { schema.keys == [:nullable] }
|
|
346
|
+
typed = schemas.reject(&nullable_only)
|
|
347
|
+
|
|
348
|
+
merged = typed.size == 1 ? typed.first.dup : merge_multi(typed)
|
|
349
|
+
merged[:nullable] = true if schemas.any?(&nullable_only) && merged.is_a?(Hash)
|
|
350
|
+
merged
|
|
351
|
+
end
|
|
347
352
|
|
|
353
|
+
def build_merged_schema_from_variations(variations)
|
|
348
354
|
# Drop empty `{}` schemas (e.g. items of an empty array) — they carry no
|
|
349
355
|
# type info and would otherwise spuriously mark every property of their
|
|
350
356
|
# populated siblings as nullable via the missing-key nullable rule.
|
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.
|
|
4
|
+
version: 0.32.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Takashi Kokubun
|
|
@@ -97,7 +97,7 @@ licenses:
|
|
|
97
97
|
metadata:
|
|
98
98
|
homepage_uri: https://github.com/exoego/rspec-openapi
|
|
99
99
|
source_code_uri: https://github.com/exoego/rspec-openapi
|
|
100
|
-
changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.
|
|
100
|
+
changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.32.0
|
|
101
101
|
rubygems_mfa_required: 'true'
|
|
102
102
|
rdoc_options: []
|
|
103
103
|
require_paths:
|
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
113
113
|
- !ruby/object:Gem::Version
|
|
114
114
|
version: '0'
|
|
115
115
|
requirements: []
|
|
116
|
-
rubygems_version: 4.0.
|
|
116
|
+
rubygems_version: 4.0.16
|
|
117
117
|
specification_version: 4
|
|
118
118
|
summary: Generate OpenAPI schema from RSpec request specs
|
|
119
119
|
test_files: []
|