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
a48ef4a2
Commit
a48ef4a2
authored
Oct 02, 2016
by
andrew morton
Committed by
GitHub
Oct 02, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #19 from drewish/little-fixes
Little fixes
parents
315e948a
fcd9706f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
77 additions
and
13 deletions
+77
-13
formatter.rb
lib/rspec/rails/swagger/formatter.rb
+2
-2
helpers.rb
lib/rspec/rails/swagger/helpers.rb
+4
-0
request_builder.rb
lib/rspec/rails/swagger/request_builder.rb
+3
-3
helpers_spec.rb
spec/rspec/rails/swagger/helpers_spec.rb
+30
-0
request_builder_spec.rb
spec/rspec/rails/swagger/request_builder_spec.rb
+38
-8
No files found.
lib/rspec/rails/swagger/formatter.rb
View file @
a48ef4a2
...
@@ -62,7 +62,7 @@ module RSpec
...
@@ -62,7 +62,7 @@ module RSpec
when
:path_item
when
:path_item
[
"
\n
"
,
metadata
[
:swagger_path_item
][
:path
]]
[
"
\n
"
,
metadata
[
:swagger_path_item
][
:path
]]
when
:operation
when
:operation
[
"
\n
"
,
metadata
[
:swagger_operation
][
:method
].
to_s
,
"
\t
"
]
[
"
\n
"
,
"%-8s"
%
metadata
[
:swagger_operation
][
:method
]
]
end
end
end
end
...
@@ -107,7 +107,7 @@ module RSpec
...
@@ -107,7 +107,7 @@ module RSpec
operation
[
:parameters
]
=
prepare_parameters
(
swagger_operation
[
:parameters
])
operation
[
:parameters
]
=
prepare_parameters
(
swagger_operation
[
:parameters
])
end
end
operation
.
merge!
(
swagger_operation
.
slice
(
operation
.
merge!
(
swagger_operation
.
slice
(
:summary
,
:description
,
:externalDocs
,
:operationId
,
:
tags
,
:
summary
,
:description
,
:externalDocs
,
:operationId
,
:consumes
,
:produces
,
:schemes
,
:deprecated
,
:security
:consumes
,
:produces
,
:schemes
,
:deprecated
,
:security
))
))
end
end
...
...
lib/rspec/rails/swagger/helpers.rb
View file @
a48ef4a2
...
@@ -174,6 +174,10 @@ module RSpec
...
@@ -174,6 +174,10 @@ module RSpec
metadata
[
:swagger_operation
][
:produces
]
=
mime_types
metadata
[
:swagger_operation
][
:produces
]
=
mime_types
end
end
def
tags
*
tags
metadata
[
:swagger_operation
][
:tags
]
=
tags
end
def
response
status_code
,
attributes
=
{},
&
block
def
response
status_code
,
attributes
=
{},
&
block
attributes
.
symbolize_keys!
attributes
.
symbolize_keys!
...
...
lib/rspec/rails/swagger/request_builder.rb
View file @
a48ef4a2
...
@@ -20,11 +20,11 @@ module RSpec
...
@@ -20,11 +20,11 @@ module RSpec
end
end
def
produces
def
produces
metadata
[
:swagger_operation
][
:produces
]
||
document
[
:produces
]
Array
(
metadata
[
:swagger_operation
][
:produces
]).
presence
||
Array
(
document
[
:produces
])
end
end
def
consumes
def
consumes
metadata
[
:swagger_operation
][
:consumes
]
||
document
[
:consumes
]
Array
(
metadata
[
:swagger_operation
][
:consumes
]).
presence
||
Array
(
document
[
:consumes
])
end
end
def
parameters
location
=
nil
def
parameters
location
=
nil
...
@@ -52,7 +52,7 @@ module RSpec
...
@@ -52,7 +52,7 @@ module RSpec
headers
=
{}
headers
=
{}
# Match the names that Rails uses internally
# Match the names that Rails uses internally
headers
[
'HTTP_ACCEPT'
]
=
produces
.
join
(
';'
)
if
produces
.
present?
headers
[
'HTTP_ACCEPT'
]
=
produces
.
first
if
produces
.
present?
headers
[
'CONTENT_TYPE'
]
=
consumes
.
first
if
consumes
.
present?
headers
[
'CONTENT_TYPE'
]
=
consumes
.
first
if
consumes
.
present?
# TODO: do we need to do some capitalization to match the rack
# TODO: do we need to do some capitalization to match the rack
...
...
spec/rspec/rails/swagger/helpers_spec.rb
View file @
a48ef4a2
...
@@ -186,6 +186,36 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::Operation do
...
@@ -186,6 +186,36 @@ RSpec.describe RSpec::Rails::Swagger::Helpers::Operation do
end
end
subject
{
klass
.
new
}
subject
{
klass
.
new
}
describe
'#consumes'
do
before
{
subject
.
metadata
=
{
swagger_operation:
{}}
}
it
'accepts an array'
do
subject
.
consumes
(
'foo'
,
'bar'
)
expect
(
subject
.
metadata
[
:swagger_operation
][
:consumes
]).
to
eq
[
'foo'
,
'bar'
]
end
end
describe
'#produces'
do
before
{
subject
.
metadata
=
{
swagger_operation:
{}}
}
it
'accepts an array'
do
subject
.
produces
(
'foo'
,
'bar'
)
expect
(
subject
.
metadata
[
:swagger_operation
][
:produces
]).
to
eq
[
'foo'
,
'bar'
]
end
end
describe
'#tags'
do
before
{
subject
.
metadata
=
{
swagger_operation:
{}}
}
it
'accepts an array'
do
subject
.
tags
(
'foo'
,
'bar'
)
expect
(
subject
.
metadata
[
:swagger_operation
][
:tags
]).
to
eq
[
'foo'
,
'bar'
]
end
end
describe
'#response'
do
describe
'#response'
do
before
{
subject
.
metadata
=
{
swagger_object: :operation
}
}
before
{
subject
.
metadata
=
{
swagger_object: :operation
}
}
...
...
spec/rspec/rails/swagger/request_builder_spec.rb
View file @
a48ef4a2
...
@@ -37,11 +37,19 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
...
@@ -37,11 +37,19 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
let
(
:document
)
{
double
}
let
(
:document
)
{
double
}
before
{
allow
(
subject
).
to
receive
(
:document
)
{
document
}
}
before
{
allow
(
subject
).
to
receive
(
:document
)
{
document
}
}
context
'with value in operation'
do
context
'with string in operation'
do
let
(
:metadata
)
{
{
swagger_operation:
{
produces:
'something'
}
}
}
it
'converts it to an array'
do
expect
(
subject
.
produces
).
to
eq
[
'something'
]
end
end
context
'with array in operation'
do
let
(
:metadata
)
{
{
swagger_operation:
{
produces:
'something'
}
}
}
let
(
:metadata
)
{
{
swagger_operation:
{
produces:
'something'
}
}
}
it
'uses that value'
do
it
'uses that value'
do
expect
(
subject
.
produces
).
to
eq
'something'
expect
(
subject
.
produces
).
to
eq
[
'something'
]
end
end
end
end
...
@@ -51,7 +59,7 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
...
@@ -51,7 +59,7 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
it
'uses the value from the document'
do
it
'uses the value from the document'
do
expect
(
document
).
to
receive
(
:[]
).
with
(
:produces
)
{
'or other'
}
expect
(
document
).
to
receive
(
:[]
).
with
(
:produces
)
{
'or other'
}
expect
(
subject
.
produces
).
to
eq
'or other'
expect
(
subject
.
produces
).
to
eq
[
'or other'
]
end
end
end
end
end
end
...
@@ -61,11 +69,19 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
...
@@ -61,11 +69,19 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
let
(
:document
)
{
double
}
let
(
:document
)
{
double
}
before
{
allow
(
subject
).
to
receive
(
:document
)
{
document
}
}
before
{
allow
(
subject
).
to
receive
(
:document
)
{
document
}
}
context
'with
value
in operation'
do
context
'with
string
in operation'
do
let
(
:metadata
)
{
{
swagger_operation:
{
consumes:
'something'
}
}
}
let
(
:metadata
)
{
{
swagger_operation:
{
consumes:
'something'
}
}
}
it
'converts it to an array'
do
expect
(
subject
.
consumes
).
to
eq
[
'something'
]
end
end
context
'with array in operation'
do
let
(
:metadata
)
{
{
swagger_operation:
{
consumes:
[
'something'
]
}
}
}
it
'uses that value'
do
it
'uses that value'
do
expect
(
subject
.
consumes
).
to
eq
'something'
expect
(
subject
.
consumes
).
to
eq
[
'something'
]
end
end
end
end
...
@@ -75,7 +91,7 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
...
@@ -75,7 +91,7 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
it
'uses the value from the document'
do
it
'uses the value from the document'
do
expect
(
document
).
to
receive
(
:[]
).
with
(
:consumes
)
{
'or other'
}
expect
(
document
).
to
receive
(
:[]
).
with
(
:consumes
)
{
'or other'
}
expect
(
subject
.
consumes
).
to
eq
'or other'
expect
(
subject
.
consumes
).
to
eq
[
'or other'
]
end
end
end
end
end
end
...
@@ -111,26 +127,40 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
...
@@ -111,26 +127,40 @@ RSpec.describe RSpec::Rails::Swagger::RequestBuilder do
allow
(
subject
).
to
receive
(
:parameters
).
with
(
:header
)
{
{}
}
allow
(
subject
).
to
receive
(
:parameters
).
with
(
:header
)
{
{}
}
end
end
context
'when produces
is present
'
do
context
'when produces
has a single value
'
do
let
(
:produces
)
{
[
'foo/bar'
]
}
let
(
:produces
)
{
[
'foo/bar'
]
}
it
'sets the Accept header'
do
it
'sets the Accept header'
do
expect
(
subject
.
headers
).
to
include
(
'HTTP_ACCEPT'
=>
'foo/bar'
)
expect
(
subject
.
headers
).
to
include
(
'HTTP_ACCEPT'
=>
'foo/bar'
)
end
end
end
end
context
'when produces has multiple values'
do
let
(
:produces
)
{
[
'foo/bar'
,
'bar/baz'
]
}
it
'sets the Accept header to the first'
do
expect
(
subject
.
headers
).
to
include
(
'HTTP_ACCEPT'
=>
'foo/bar'
)
end
end
context
'when produces is blank'
do
context
'when produces is blank'
do
it
'does not set the Accept header'
do
it
'does not set the Accept header'
do
expect
(
subject
.
headers
.
keys
).
not_to
include
(
'HTTP_ACCEPT'
)
expect
(
subject
.
headers
.
keys
).
not_to
include
(
'HTTP_ACCEPT'
)
end
end
end
end
context
'when consumes
is present
'
do
context
'when consumes
has a single value
'
do
let
(
:consumes
)
{
[
'bar/baz'
]
}
let
(
:consumes
)
{
[
'bar/baz'
]
}
it
'sets the Content-Type header'
do
it
'sets the Content-Type header'
do
expect
(
subject
.
headers
).
to
include
(
'CONTENT_TYPE'
=>
'bar/baz'
)
expect
(
subject
.
headers
).
to
include
(
'CONTENT_TYPE'
=>
'bar/baz'
)
end
end
end
end
context
'when consumes has multiple values'
do
let
(
:consumes
)
{
[
'bar/baz'
,
'flooz/flop'
]
}
it
'sets the Content-Type header to the first'
do
expect
(
subject
.
headers
).
to
include
(
'CONTENT_TYPE'
=>
'bar/baz'
)
end
end
context
'when consumes is blank'
do
context
'when consumes is blank'
do
it
'does not set the Content-Type header'
do
it
'does not set the Content-Type header'
do
expect
(
subject
.
headers
.
keys
).
not_to
include
(
'CONTENT_TYPE'
)
expect
(
subject
.
headers
.
keys
).
not_to
include
(
'CONTENT_TYPE'
)
...
...
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