apidoc 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: