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
bf153373
Commit
bf153373
authored
Mar 16, 2017
by
andrew morton
Committed by
GitHub
Mar 16, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #29 from drewish/tags
Accept tags for operations from parent contexts
parents
fe947519
88083617
Hide 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 @
bf153373
...
...
@@ -42,13 +42,16 @@ module RSpec
attributes
.
symbolize_keys!
raise
ArgumentError
,
"Path must start with a /"
unless
template
.
starts_with?
(
'/'
)
#TODO template might be a $ref
meta
=
{
swagger_object: :path_item
,
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
)
end
end
...
...
@@ -58,6 +61,12 @@ module RSpec
def
operation
method
,
attributes
=
{},
&
block
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
validate_method!
method
...
...
@@ -175,7 +184,8 @@ module RSpec
end
def
tags
*
tags
metadata
[
:swagger_operation
][
:tags
]
=
tags
metadata
[
:swagger_operation
][
:tags
]
||=
[]
metadata
[
:swagger_operation
][
:tags
]
+=
tags
end
def
response
status_code
,
attributes
=
{},
&
block
...
...
make_site.sh
View file @
bf153373
...
...
@@ -28,3 +28,5 @@ fi
cd
-
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 @
bf153373
require
'swagger_helper'
RSpec
.
describe
"Requestsing"
,
type: :request
do
# path "/ping" do
# operation :put do
# response(200, {description: 'OK'})
# puts "in here"
# end
# end
path
'/posts'
do
operation
"GET"
,
summary
:"fetch list"
do
RSpec
.
describe
"Sample Requests"
,
type: :request
,
tags:
[
:context_tag
]
do
path
'/posts'
,
tags:
[
'path_tag'
]
do
operation
"GET"
,
summary:
"fetch list"
do
produces
'application/json'
tags
'operation_tag'
response
(
200
,
{
description:
"successful"
})
end
...
...
spec/rspec/rails/swagger/helpers_spec.rb
View file @
bf153373
...
...
@@ -34,6 +34,17 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::Paths do
subject
.
path
(
'/ping'
,
swagger_document:
'hello_swagger.json'
)
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
RSpec
.
describe
RSpec
::
Rails
::
Swagger
::
Helpers
::
PathItem
do
...
...
@@ -81,6 +92,18 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::PathItem do
operationId:
'updatePetWithForm'
)
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
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