Class: ActionSpec::Doc::Dsl
- Inherits:
-
Object
- Object
- ActionSpec::Doc::Dsl
- Defined in:
- lib/action_spec/doc/dsl.rb
Constant Summary collapse
- PARAM_LOCATIONS =
%i[header path query cookie].freeze
- RESPONSE_MEDIA_TYPES =
%i[json form].freeze
Instance Method Summary collapse
- #body(media_type, data: {}, required: false) ⇒ Object
- #body!(media_type, data: {}) ⇒ Object
- #data(name, type = String, **options) ⇒ Object
- #error(code, description = nil, media_type = nil, desc: nil, **options) ⇒ Object
- #errors(code, examples = nil, media_type = nil, desc: "Error", **options) ⇒ Object
- #form(data:, **options) ⇒ Object
- #form!(data:, **options) ⇒ Object
-
#initialize(endpoint) ⇒ Dsl
constructor
A new instance of Dsl.
- #json(data:, **options) ⇒ Object
- #json!(data:, **options) ⇒ Object
- #openapi(enabled) ⇒ Object
- #response(code, description = nil, media_type = nil, desc: nil, data: nil, example: nil, examples: nil, **options) ⇒ Object
- #scope(name, compact: nil, compact_blank: nil, &block) ⇒ Object
Constructor Details
#initialize(endpoint) ⇒ Dsl
Returns a new instance of Dsl.
8 9 10 11 |
# File 'lib/action_spec/doc/dsl.rb', line 8 def initialize(endpoint) @endpoint = endpoint @scopes = [] end |
Instance Method Details
#body(media_type, data: {}, required: false) ⇒ Object
31 32 33 |
# File 'lib/action_spec/doc/dsl.rb', line 31 def body(media_type, data: {}, required: false, **) add_body(media_type, data, required:) end |
#body!(media_type, data: {}) ⇒ Object
35 36 37 |
# File 'lib/action_spec/doc/dsl.rb', line 35 def body!(media_type, data: {}, **) add_body(media_type, data, required: true) end |
#data(name, type = String, **options) ⇒ Object
55 56 57 |
# File 'lib/action_spec/doc/dsl.rb', line 55 def data(name, type = String, **) add_body(:form, { name => .merge(type:) }) end |
#error(code, description = nil, media_type = nil, desc: nil, **options) ⇒ Object
90 91 92 |
# File 'lib/action_spec/doc/dsl.rb', line 90 def error(code, description = nil, media_type = nil, desc: nil, **) response(code, description, media_type, desc: desc || "Error", **) end |
#errors(code, examples = nil, media_type = nil, desc: "Error", **options) ⇒ Object
94 95 96 |
# File 'lib/action_spec/doc/dsl.rb', line 94 def errors(code, examples = nil, media_type = nil, desc: "Error", **) response(code, nil, media_type, desc:, examples: examples || , **.except(*Array((examples || ).keys))) end |
#form(data:, **options) ⇒ Object
47 48 49 |
# File 'lib/action_spec/doc/dsl.rb', line 47 def form(data:, **) body(:form, data:, **) end |
#form!(data:, **options) ⇒ Object
51 52 53 |
# File 'lib/action_spec/doc/dsl.rb', line 51 def form!(data:, **) body!(:form, data:, **) end |
#json(data:, **options) ⇒ Object
39 40 41 |
# File 'lib/action_spec/doc/dsl.rb', line 39 def json(data:, **) body(:json, data:, **) end |
#json!(data:, **options) ⇒ Object
43 44 45 |
# File 'lib/action_spec/doc/dsl.rb', line 43 def json!(data:, **) body!(:json, data:, **) end |
#openapi(enabled) ⇒ Object
67 68 69 |
# File 'lib/action_spec/doc/dsl.rb', line 67 def openapi(enabled) endpoint.[:openapi] = enabled end |
#response(code, description = nil, media_type = nil, desc: nil, data: nil, example: nil, examples: nil, **options) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/action_spec/doc/dsl.rb', line 73 def response(code, description = nil, media_type = nil, desc: nil, data: nil, example: nil, examples: nil, **) description, media_type = normalize_response_arguments(description, media_type) schema, example, examples = normalize_response_body(description, data:, example:, examples:, options:) endpoint.add_response( code, Response.new( code:, description: resolved_description(description, desc), media_type: media_type || ActionSpec.config.default_response_media_type, schema:, example:, examples:, options: ) ) end |
#scope(name, compact: nil, compact_blank: nil, &block) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/action_spec/doc/dsl.rb', line 59 def scope(name, compact: nil, compact_blank: nil, &block) endpoint.request.register_scope(name, compact:, compact_blank:) scopes.push(name.to_sym) instance_exec(&block) ensure scopes.pop end |