Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
rspec-rails-swagger
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
rspec-rails-swagger
Commits
88083617
Commit
88083617
authored
Mar 16, 2017
by
andrew morton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Accept tags for operation from parent contexts
parent
fe947519
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
13 deletions
+42
-13
helpers.rb
lib/rspec/rails/swagger/helpers.rb
+13
-3
make_site.sh
make_site.sh
+2
-0
request_spec.rb
spec/requests/request_spec.rb
+4
-10
helpers_spec.rb
spec/rspec/rails/swagger/helpers_spec.rb
+23
-0
No files found.
lib/rspec/rails/swagger/helpers.rb
View file @
88083617
...
@@ -42,13 +42,16 @@ module RSpec
...
@@ -42,13 +42,16 @@ module RSpec
attributes
.
symbolize_keys!
attributes
.
symbolize_keys!
raise
ArgumentError
,
"Path must start with a /"
unless
template
.
starts_with?
(
'/'
)
raise
ArgumentError
,
"Path must start with a /"
unless
template
.
starts_with?
(
'/'
)
#TODO template might be a $ref
#TODO template might be a $ref
meta
=
{
meta
=
{
swagger_object: :path_item
,
swagger_object: :path_item
,
swagger_document:
attributes
[
:swagger_document
]
||
RSpec
.
configuration
.
swagger_docs
.
keys
.
first
,
swagger_document:
attributes
[
:swagger_document
]
||
RSpec
.
configuration
.
swagger_docs
.
keys
.
first
,
swagger_path_item:
{
path:
template
}
swagger_path_item:
{
path:
template
}
,
}
}
# Merge tags passed into the path with those from parent contexts.
if
attributes
[
:tags
]
meta
[
:tags
]
=
(
metadata
.
try
(
:[]
,
:tags
)
||
[])
+
attributes
[
:tags
]
end
describe
(
template
,
meta
,
&
block
)
describe
(
template
,
meta
,
&
block
)
end
end
end
end
...
@@ -58,6 +61,12 @@ module RSpec
...
@@ -58,6 +61,12 @@ module RSpec
def
operation
method
,
attributes
=
{},
&
block
def
operation
method
,
attributes
=
{},
&
block
attributes
.
symbolize_keys!
attributes
.
symbolize_keys!
# Include tags from parent contexts so you can tag all the paths
# in a controller at once.
if
metadata
.
try
(
:[]
,
:tags
).
present?
attributes
[
:tags
]
||=
[]
attributes
[
:tags
]
+=
metadata
[
:tags
]
end
method
=
method
.
to_s
.
downcase
method
=
method
.
to_s
.
downcase
validate_method!
method
validate_method!
method
...
@@ -175,7 +184,8 @@ module RSpec
...
@@ -175,7 +184,8 @@ module RSpec
end
end
def
tags
*
tags
def
tags
*
tags
metadata
[
:swagger_operation
][
:tags
]
=
tags
metadata
[
:swagger_operation
][
:tags
]
||=
[]
metadata
[
:swagger_operation
][
:tags
]
+=
tags
end
end
def
response
status_code
,
attributes
=
{},
&
block
def
response
status_code
,
attributes
=
{},
&
block
...
...
make_site.sh
View file @
88083617
...
@@ -28,3 +28,5 @@ fi
...
@@ -28,3 +28,5 @@ fi
cd
-
cd
-
bundle
exec
rspec
bundle
exec
rspec
# Duplicating the body of the rake task. Need to figure out how to call it directly.
bundle
exec
rspec
-f
RSpec::Rails::Swagger::Formatter
--order
defined
-t
swagger_object
spec/requests/request_spec.rb
View file @
88083617
require
'swagger_helper'
require
'swagger_helper'
RSpec
.
describe
"Requestsing"
,
type: :request
do
RSpec
.
describe
"Sample Requests"
,
type: :request
,
tags:
[
:context_tag
]
do
# path "/ping" do
path
'/posts'
,
tags:
[
'path_tag'
]
do
# operation :put do
operation
"GET"
,
summary:
"fetch list"
do
# response(200, {description: 'OK'})
# puts "in here"
# end
# end
path
'/posts'
do
operation
"GET"
,
summary
:"fetch list"
do
produces
'application/json'
produces
'application/json'
tags
'operation_tag'
response
(
200
,
{
description:
"successful"
})
response
(
200
,
{
description:
"successful"
})
end
end
...
...
spec/rspec/rails/swagger/helpers_spec.rb
View file @
88083617
...
@@ -34,6 +34,17 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::Paths do
...
@@ -34,6 +34,17 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::Paths do
subject
.
path
(
'/ping'
,
swagger_document:
'hello_swagger.json'
)
subject
.
path
(
'/ping'
,
swagger_document:
'hello_swagger.json'
)
end
end
it
"passes tags through to the metadata"
do
expect
(
subject
).
to
receive
(
:describe
).
with
(
"/ping"
,
{
swagger_object: :path_item
,
swagger_document:
RSpec
.
configuration
.
swagger_docs
.
keys
.
first
,
swagger_path_item:
{
path:
'/ping'
},
tags:
[
'tag1'
]
})
subject
.
path
(
'/ping'
,
tags:
[
'tag1'
])
end
end
end
RSpec
.
describe
RSpec
::
Rails
::
Swagger
::
Helpers
::
PathItem
do
RSpec
.
describe
RSpec
::
Rails
::
Swagger
::
Helpers
::
PathItem
do
...
@@ -81,6 +92,18 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::PathItem do
...
@@ -81,6 +92,18 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::PathItem do
operationId:
'updatePetWithForm'
operationId:
'updatePetWithForm'
)
)
end
end
it
'includes tags from metadata of parent contexts'
do
subject
.
metadata
=
{
tags:
[
'baz'
]
}
expect
(
subject
).
to
receive
(
:describe
).
with
(
'get'
,
{
swagger_object: :operation
,
swagger_operation:
{
tags:
[
'foo'
,
'baz'
],
method: :get
}
})
subject
.
operation
(
:get
,
tags:
[
'foo'
])
end
end
end
described_class
::
METHODS
.
each
do
|
method
|
described_class
::
METHODS
.
each
do
|
method
|
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment