Skip to content

Commit

Permalink
add ability to define custom summary and tags builders
Browse files Browse the repository at this point in the history
  • Loading branch information
mercedesb committed Nov 30, 2023
1 parent b95658c commit bd2aaea
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,12 @@ EOS
# Generate a custom description, given an RSpec example
RSpec::OpenAPI.description_builder = -> (example) { example.description }

# Generate a custom summary, given an RSpec example
RSpec::OpenAPI.summary_builder = -> (example) { example.metadata[:summary] }

# Generate a custom tags, given an RSpec example
RSpec::OpenAPI.tags_builder = -> (example) { example.metadata[:tags] }

# Change the example type(s) that will generate schema
RSpec::OpenAPI.example_types = %i[request]
```
Expand Down
4 changes: 4 additions & 0 deletions lib/rspec/openapi.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ module RSpec::OpenAPI
@comment = nil
@enable_example = true
@description_builder = ->(example) { example.description }
@summary_builder = ->(example) { example.metadata[:summary] }
@tags_builder = ->(example) { example.metadata[:tags] }
@info = {}
@application_version = '1.0.0'
@request_headers = []
Expand All @@ -32,6 +34,8 @@ class << self
:comment,
:enable_example,
:description_builder,
:summary_builder,
:tags_builder,
:info,
:application_version,
:request_headers,
Expand Down
4 changes: 2 additions & 2 deletions lib/rspec/openapi/record_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ def extract_headers(request, response)

def extract_request_attributes(request, example)
metadata = example.metadata[:openapi] || {}
summary = metadata[:summary]
tags = metadata[:tags]
summary = metadata[:summary] || RSpec::OpenAPI.summary_builder.call(example)
tags = metadata[:tags] || RSpec::OpenAPI.tags_builder.call(example)
operation_id = metadata[:operation_id]
required_request_params = metadata[:required_request_params] || []
security = metadata[:security]
Expand Down

0 comments on commit bd2aaea

Please sign in to comment.