apidoc 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,113 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe ApiDoc::HtmlWriter do
4
+ before do
5
+ @doc = ApiDoc.new(TestApp) do
6
+ get '/tacos.json' do
7
+ desc "Get all tacos"
8
+ end
9
+ end
10
+ end
11
+
12
+ describe "when writing to HTML" do
13
+ subject do
14
+ stream = StringIO.new
15
+ ApiDoc::HtmlWriter.new(@doc).write(stream)
16
+ stream.read
17
+ end
18
+
19
+ it "should write the request method" do
20
+ subject.should include('GET')
21
+ end
22
+
23
+ it "should write the request path" do
24
+ subject.should include("/tacos.json")
25
+ end
26
+
27
+ it "should write the response body" do
28
+ subject.should include('meat')
29
+ end
30
+
31
+ describe "when accepting JSON as input" do
32
+ before do
33
+ @doc = ApiDoc.new(TestApp) do
34
+ post '/tacos.json' do
35
+ desc "Make a new delicious taco"
36
+ accept :json
37
+ params do
38
+ { meat: 'beef', lettuce: true }
39
+ end
40
+ end
41
+ end
42
+
43
+ @doc.run
44
+ end
45
+
46
+ subject do
47
+ stream = StringIO.new
48
+ ApiDoc::HtmlWriter.new(@doc).write(stream)
49
+ stream.read
50
+ end
51
+
52
+ it "should pretty-print the JSON data in the IN section" do
53
+ subject.should include("{\n "meat": "beef",\n "lettuce": true\n}")
54
+ end
55
+ end
56
+
57
+ describe "when setting the default accept and content type" do
58
+ before do
59
+ @doc = ApiDoc.new(TestApp) do
60
+ accept :json
61
+ content_type :json
62
+
63
+ post '/tacos.json' do
64
+ desc "Make a new delicious taco"
65
+ params do
66
+ { meat: 'beef', lettuce: true }
67
+ end
68
+ end
69
+ end
70
+
71
+ @doc.run
72
+ end
73
+
74
+ subject { @doc }
75
+
76
+ it "should propagate the accept type to its resources" do
77
+ @doc.resources.first.accept.should == :json
78
+ end
79
+
80
+ it "should propagate the content type to its resources" do
81
+ @doc.resources.first.content_type.should == :json
82
+ end
83
+ end
84
+
85
+ describe "when providing JSON as output" do
86
+ before do
87
+ @doc = ApiDoc.new(TestApp) do
88
+ post '/tacos.json' do
89
+ desc "Make a new delicious taco"
90
+ accept :json
91
+ content_type :json
92
+ params do
93
+ { meat: 'beef', lettuce: true }
94
+ end
95
+ end
96
+ end
97
+
98
+ @doc.run
99
+ end
100
+
101
+ subject do
102
+ stream = StringIO.new
103
+ ApiDoc::HtmlWriter.new(@doc).write(stream)
104
+ stream.read
105
+ end
106
+
107
+ it "should pretty-print the JSON data in the OUT section" do
108
+ subject.should include("{\n "meat": "beef",\n "lettuce": true\n}")
109
+ end
110
+ end
111
+
112
+ end
113
+ end
@@ -0,0 +1,34 @@
1
+ require 'sinatra/base'
2
+
3
+ class TestApp < Sinatra::Base
4
+ get '/tacos.json' do
5
+ JSON.generate [ { meat: 'beef' }, { meat: 'chicken' } ]
6
+ end
7
+
8
+ post '/tacos.json' do
9
+ request.body
10
+ end
11
+
12
+ get '/tacos/:id.json' do
13
+ JSON.generate({ meat: 'beef', id: params['id'] })
14
+ end
15
+ end
16
+
17
+ class RequestMethodsApp < Sinatra::Base
18
+ get '/get.json' do
19
+ JSON.generate({ method: 'GET' })
20
+ end
21
+ post '/post.json' do
22
+ JSON.generate({ method: 'POST' })
23
+ end
24
+ put '/put.json' do
25
+ JSON.generate({ method: 'PUT' })
26
+ end
27
+ delete '/delete.json' do
28
+ JSON.generate({ method: 'DELETE' })
29
+ end
30
+ options '/options.json' do
31
+ JSON.generate({ method: 'OPTIONS' })
32
+ end
33
+ end
34
+
@@ -108,21 +108,20 @@
108
108
  font-size: 1em;
109
109
  }
110
110
 
111
- .api-resource .desc {
112
- margin: 1em 0;
113
- color:
114
- #333;
115
- display: block;
116
- font-family: Helvetica, sans-serif;
117
- font-size: 13px;
118
- font-style: normal;
119
- font-weight: 100;
120
- height: 17px;
121
- line-height: 17px;
122
- text-shadow:
123
- rgba(255, 255, 255, 0.597656) 0px 1px 0px;
124
- vertical-align: baseline;
125
- }
111
+ .api-resource .desc {
112
+ margin: 1em 0;
113
+ color:
114
+ #333;
115
+ display: block;
116
+ font-family: Helvetica, sans-serif;
117
+ font-size: 13px;
118
+ font-weight: 100;
119
+ height: 17px;
120
+ line-height: 17px;
121
+ text-shadow:
122
+ rgba(255, 255, 255, 0.597656) 0px 1px 0px;
123
+ vertical-align: baseline;
124
+ }
126
125
  .api-resource .params,
127
126
  .api-resource .response {
128
127
  font-family: Monaco, fixed;
@@ -1,7 +1,7 @@
1
1
  <div class="api-resource">
2
2
  <div class="method">{{method}}</div>
3
3
  <div class="path">{{path}}</div>
4
- <div class="desc">{{desc}}</div>
4
+ <div class="desc">{{{desc}}}</div>
5
5
  <div class="params">{{params}}</div>
6
6
  <div class="response">{{response}}</div>
7
7
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apidoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-04 00:00:00.000000000Z
12
+ date: 2012-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70312610069960 !ruby/object:Gem::Requirement
16
+ requirement: &70160243468020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70312610069960
24
+ version_requirements: *70160243468020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mustache
27
- requirement: &70312610069300 !ruby/object:Gem::Requirement
27
+ requirement: &70160243466720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70312610069300
35
+ version_requirements: *70160243466720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-test
38
- requirement: &70312610068680 !ruby/object:Gem::Requirement
38
+ requirement: &70160243465300 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70312610068680
46
+ version_requirements: *70160243465300
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mustache
49
- requirement: &70312610051540 !ruby/object:Gem::Requirement
49
+ requirement: &70160243464320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,21 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70312610051540
57
+ version_requirements: *70160243464320
58
+ - !ruby/object:Gem::Dependency
59
+ name: kramdown
60
+ requirement: &70160243462860 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70160243462860
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &70312610050820 !ruby/object:Gem::Requirement
71
+ requirement: &70160243476220 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: 2.8.0
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70312610050820
79
+ version_requirements: *70160243476220
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rdoc
71
- requirement: &70312610049820 !ruby/object:Gem::Requirement
82
+ requirement: &70160243474840 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ~>
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '3.12'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70312610049820
90
+ version_requirements: *70160243474840
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: bundler
82
- requirement: &70312610049060 !ruby/object:Gem::Requirement
93
+ requirement: &70160243472660 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ~>
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: 1.0.0
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70312610049060
101
+ version_requirements: *70160243472660
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: jeweler
93
- requirement: &70312610048420 !ruby/object:Gem::Requirement
104
+ requirement: &70160243471660 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ~>
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: 1.8.3
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *70312610048420
112
+ version_requirements: *70160243471660
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: json
104
- requirement: &70312610047480 !ruby/object:Gem::Requirement
115
+ requirement: &70160243470780 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ! '>='
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: '0'
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *70312610047480
123
+ version_requirements: *70160243470780
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: sinatra
115
- requirement: &70312610046860 !ruby/object:Gem::Requirement
126
+ requirement: &70160243470020 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ! '>='
@@ -120,7 +131,7 @@ dependencies:
120
131
  version: '0'
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *70312610046860
134
+ version_requirements: *70160243470020
124
135
  description: Minimalist API documentation generator for Rack applications.
125
136
  email: tj@turing.com
126
137
  executables:
@@ -148,7 +159,10 @@ files:
148
159
  - ftags
149
160
  - lib/apidoc.rb
150
161
  - spec/apidoc_spec.rb
162
+ - spec/before_and_after_spec.rb
163
+ - spec/html_writer_spec.rb
151
164
  - spec/spec_helper.rb
165
+ - spec/support/test_apps.rb
152
166
  - templates/apidoc_helper.rb
153
167
  - templates/layout.mustache
154
168
  - templates/resource.mustache
@@ -167,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
181
  version: '0'
168
182
  segments:
169
183
  - 0
170
- hash: 3069160393019162602
184
+ hash: 3086933107750207684
171
185
  required_rubygems_version: !ruby/object:Gem::Requirement
172
186
  none: false
173
187
  requirements: