Class: RSpec::Rails::Api::OpenApiRenderer
- Inherits:
-
Object
- Object
- RSpec::Rails::Api::OpenApiRenderer
- Defined in:
- lib/rspec/rails/api/open_api_renderer.rb
Overview
Class to render metadatas. Example:
```rb
renderer = RSpec::Rails::Api::OpenApiRenderer.new
renderer.merge_context(example_context)
renderer.write_files
```
Instance Attribute Summary collapse
-
#api_description ⇒ Object
writeonly
rubocop:disable Metrics/ClassLength.
-
#api_servers ⇒ Object
writeonly
rubocop:disable Metrics/ClassLength.
-
#api_title ⇒ Object
writeonly
rubocop:disable Metrics/ClassLength.
-
#api_tos ⇒ Object
writeonly
rubocop:disable Metrics/ClassLength.
-
#api_version ⇒ Object
writeonly
rubocop:disable Metrics/ClassLength.
Instance Method Summary collapse
- #api_contact=(name: nil, email: nil, url: nil) ⇒ Object
- #api_license=(name: nil, url: nil) ⇒ Object
-
#initialize ⇒ OpenApiRenderer
constructor
A new instance of OpenApiRenderer.
- #merge_context(context) ⇒ Object
- #prepare_metadata ⇒ Object
- #write_files(path = nil, only: %i[yaml json])) ⇒ Object
Constructor Details
#initialize ⇒ OpenApiRenderer
Returns a new instance of OpenApiRenderer.
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 19 def initialize @metadata = { resources: {}, entities: {} } @api_infos = {} @api_servers = {} @api_paths = {} @api_components = {} @api_tags = [] @api_contact = {} @api_license = {} end |
Instance Attribute Details
#api_description=(value) ⇒ Object (writeonly)
rubocop:disable Metrics/ClassLength
17 18 19 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 17 def api_description=(value) @api_description = value end |
#api_servers=(value) ⇒ Object
rubocop:disable Metrics/ClassLength
17 18 19 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 17 def api_servers=(value) @api_servers = value end |
#api_title=(value) ⇒ Object (writeonly)
rubocop:disable Metrics/ClassLength
17 18 19 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 17 def api_title=(value) @api_title = value end |
#api_tos=(value) ⇒ Object (writeonly)
rubocop:disable Metrics/ClassLength
17 18 19 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 17 def api_tos=(value) @api_tos = value end |
#api_version=(value) ⇒ Object (writeonly)
rubocop:disable Metrics/ClassLength
17 18 19 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 17 def api_version=(value) @api_version = value end |
Instance Method Details
#api_contact=(name: nil, email: nil, url: nil) ⇒ Object
59 60 61 62 63 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 59 def api_contact=(name: nil, email: nil, url: nil) @api_contact[:name] = name if name @api_contact[:email] = email if email @api_contact[:url] = url if url end |
#api_license=(name: nil, url: nil) ⇒ Object
65 66 67 68 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 65 def api_license=(name: nil, url: nil) @api_license[:name] = name if name @api_license[:url] = url if url end |
#merge_context(context) ⇒ Object
30 31 32 33 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 30 def merge_context(context) @metadata[:resources].deep_merge! context[:resources] @metadata[:entities].deep_merge! context[:entities] end |
#prepare_metadata ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 46 def # Example: https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore-expanded.yaml { openapi: '3.0.0', info: @api_infos, servers: @api_servers, paths: @api_paths, components: @api_components, tags: @api_tags, }.deep_stringify_keys end |
#write_files(path = nil, only: %i[yaml json])) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/rspec/rails/api/open_api_renderer.rb', line 35 def write_files(path = nil, only: %i[yaml json]) content = path ||= ::Rails.root.join('tmp', 'rspec_api_rails') only.each do |type| next unless %i[yaml json].include? type File.write "#{path}.#{type}", content.send("to_#{type}") end end |