Skip to content

Commit 48d556d

Browse files
authored
Merge pull request #131 from jamerine/feat-add-operation-id-support
added operationId to metadata of request specs
2 parents 74c05d3 + 42d67cc commit 48d556d

File tree

5 files changed

+8
-3
lines changed

5 files changed

+8
-3
lines changed

lib/rspec/openapi/record.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
:request_headers, # @param [Array] - [["header_key1", "header_value1"], ["header_key2", "header_value2"]]
1212
:summary, # @param [String] - "v1/statuses #show"
1313
:tags, # @param [Array] - ["Status"]
14+
:operation_id, # @param [String] - "request-1234"
1415
:description, # @param [String] - "returns a status"
1516
:security, # @param [Array] - [{securityScheme1: []}]
1617
:status, # @param [Integer] - 200

lib/rspec/openapi/record_builder.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def build(context, example:)
1111
request, response = extract_request_response(context)
1212
return if request.nil?
1313

14-
path, summary, tags, required_request_params, raw_path_params, description, security =
14+
path, summary, tags, operation_id, required_request_params, raw_path_params, description, security =
1515
extract_request_attributes(request, example)
1616

1717
request_headers, response_headers = extract_headers(request, response)
@@ -27,6 +27,7 @@ def build(context, example:)
2727
request_headers: request_headers,
2828
summary: summary,
2929
tags: tags,
30+
operation_id: operation_id,
3031
description: description,
3132
security: security,
3233
status: response.status,
@@ -63,6 +64,7 @@ def extract_request_attributes(request, example)
6364
metadata = example.metadata[:openapi] || {}
6465
summary = metadata[:summary]
6566
tags = metadata[:tags]
67+
operation_id = metadata[:operation_id]
6668
required_request_params = metadata[:required_request_params] || []
6769
security = metadata[:security]
6870
description = metadata[:description] || RSpec::OpenAPI.description_builder.call(example)
@@ -84,7 +86,7 @@ def extract_request_attributes(request, example)
8486
raw_path_params = raw_path_params.slice(*(raw_path_params.keys - %i[controller action format]))
8587
end
8688
summary ||= "#{request.method} #{path}"
87-
[path, summary, tags, required_request_params, raw_path_params, description, security]
89+
[path, summary, tags, operation_id, required_request_params, raw_path_params, description, security]
8890
end
8991

9092
def extract_request_response(context)

lib/rspec/openapi/schema_builder.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def build(record)
2727
record.http_method.downcase => {
2828
summary: record.summary,
2929
tags: record.tags,
30+
operationId: record.operation_id,
3031
security: record.security,
3132
parameters: build_parameters(record),
3233
requestBody: build_request_body(record),

spec/rails/doc/smart/expected.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ paths:
8686
- message
8787
example:
8888
message: Unauthorized
89+
operationId: table-index
8990
"/tables/{id}":
9091
get:
9192
summary: show

spec/requests/rails_smart_merge_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Small subset of `rails_spec.rb` with slight changes
3838
RSpec.describe 'Tables', type: :request do
39-
describe '#index', openapi: { required_request_params: 'show_columns' } do
39+
describe '#index', openapi: { required_request_params: 'show_columns', operation_id: 'table-index' } do
4040
context it 'returns a list of tables' do
4141
it 'with flat query parameters' do
4242
# These new params replace them in old spec

0 commit comments

Comments
 (0)