forked from zipmark/rspec_api_documentation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson_iodocs.feature
123 lines (113 loc) · 3.7 KB
/
json_iodocs.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Feature: Json Iodocs
In order to serve the docs from my API
As Zipmark
I want to generate text files for each of my resources containing their combined docs
Background:
Given a file named "app.rb" with:
"""
class App
def self.call(env)
request = Rack::Request.new(env)
response = Rack::Response.new
response["Content-Type"] = "text/plain"
response.write("Hello, #{request.params["target"]}!")
response.finish
end
end
"""
And a file named "app_spec.rb" with:
"""
require "rspec_api_documentation"
require "rspec_api_documentation/dsl"
RspecApiDocumentation.configure do |config|
config.app = App
config.api_name = "app"
config.api_explanation = "desc"
config.format = :json_iodocs
config.io_docs_protocol = "https"
end
resource "Greetings" do
get "/greetings" do
parameter :target, "The thing you want to greet"
example "Greeting your favorite gem" do
do_request :target => "rspec_api_documentation"
expect(response_headers["Content-Type"]).to eq("text/plain")
expect(status).to eq(200)
expect(response_body).to eq('Hello, rspec_api_documentation!')
end
example "Greeting your favorite developers of your favorite gem" do
do_request :target => "Sam & Eric"
expect(response_headers["Content-Type"]).to eq("text/plain")
expect(status).to eq(200)
expect(response_body).to eq('Hello, Sam & Eric!')
end
end
end
"""
When I run `rspec app_spec.rb --require ./app.rb --format RspecApiDocumentation::ApiFormatter`
Scenario: Output helpful progress to the console
Then the output should contain:
"""
Generating API Docs
Greetings
GET /greetings
* Greeting your favorite gem
* Greeting your favorite developers of your favorite gem
"""
And the output should contain "2 examples, 0 failures"
And the exit status should be 0
Scenario: File should look like we expect
Then the file "doc/api/apiconfig.json" should contain JSON exactly like:
"""
{
"app" : {
"name" : "app",
"description": "desc",
"protocol" : "https",
"publicPath" : "",
"baseURL" : null
}
}
"""
Then the file "doc/api/app.json" should contain JSON exactly like:
"""
{
"endpoints": [
{
"name": "Greetings",
"methods": [
{
"MethodName": "Greeting your favorite developers of your favorite gem",
"Synopsis": null,
"HTTPMethod": "GET",
"URI": "/greetings?target=Sam+%26+Eric",
"RequiresOAuth": "N",
"parameters": [
{
"Name": "target",
"Description": "The thing you want to greet",
"Default": "",
"Required": "N"
}
]
},
{
"MethodName": "Greeting your favorite gem",
"Synopsis": null,
"HTTPMethod": "GET",
"URI": "/greetings?target=rspec_api_documentation",
"RequiresOAuth": "N",
"parameters": [
{
"Name": "target",
"Description": "The thing you want to greet",
"Default": "",
"Required": "N"
}
]
}
]
}
]
}
"""