fdoc 0.2.5 → 0.2.6

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.
data/lib/fdoc/service.rb CHANGED
@@ -31,6 +31,15 @@ class Fdoc::Service
31
31
  end
32
32
  end
33
33
 
34
+ def self.verify!(verb, path, request_params, response_params,
35
+ response_status, successful)
36
+ service = Fdoc::Service.new(Fdoc.service_path)
37
+ endpoint = service.open(verb, path)
38
+ endpoint.consume_request(request_params, successful)
39
+ endpoint.consume_response(response_params, response_status, successful)
40
+ endpoint.persist! if endpoint.respond_to?(:persist!)
41
+ end
42
+
34
43
  # Returns an Endpoint described by (verb, path)
35
44
  # In scaffold_mode, it will return an EndpointScaffold an of existing file
36
45
  # or create an empty EndpointScaffold
@@ -1,3 +1,5 @@
1
+ require 'json'
2
+
1
3
  module Fdoc
2
4
  module SpecWatcher
3
5
  VERBS = [:get, :post, :put, :delete]
@@ -6,7 +8,7 @@ module Fdoc
6
8
  define_method(verb) do |*params|
7
9
  action, request_params = params
8
10
 
9
- request_params = if request_params.kind_of(Hash)
11
+ request_params = if request_params.kind_of?(Hash)
10
12
  request_params
11
13
  else
12
14
  begin
@@ -36,23 +38,12 @@ module Fdoc
36
38
  {}
37
39
  end
38
40
  successful = Fdoc.decide_success(response_params, response.status)
39
- verify!(verb, path, request_params, response_params, response.status,
40
- successful)
41
+ Service.verify!(verb, path, request_params, response_params,
42
+ response.status, successful)
41
43
  end
42
44
 
43
45
  result
44
46
  end
45
47
  end
46
-
47
- private
48
-
49
- def verify!(verb, path, request_params, response_params, response_status,
50
- successful)
51
- service = Service.new(Fdoc.service_path)
52
- endpoint = service.open(verb, path)
53
- endpoint.consume_request(request_params, successful)
54
- endpoint.consume_response(response_params, response_status, successful)
55
- endpoint.persist! if endpoint.respond_to?(:persist!)
56
- end
57
48
  end
58
49
  end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ require 'fdoc/spec_watcher'
4
+
5
+ describe Fdoc::SpecWatcher do
6
+ before do
7
+ # This should be an integration test, but for now a smoke test suffices to
8
+ # surface obvious bugs and verify some behaviours.
9
+ @klass = Class.new do
10
+ def example
11
+ Struct.new(:metadata).new(:fdoc => 'index')
12
+ end
13
+
14
+ def response
15
+ Struct.new(:body, :status).new("{}", 200)
16
+ end
17
+
18
+ def get(action, params)
19
+ params
20
+ end
21
+ end.new
22
+ @klass.extend(Fdoc::SpecWatcher)
23
+ end
24
+
25
+ it 'should verify when params are a hash' do
26
+ Fdoc::Service.should_receive(:verify!).with do |*args|
27
+ args[2] == {:id => 1}
28
+ end
29
+ @klass.get(:index, {:id => 1})
30
+ end
31
+
32
+ it 'should verify when params are JSON' do
33
+ Fdoc::Service.should_receive(:verify!).with do |*args|
34
+ args[2] == {'id' => 1}
35
+ end
36
+ @klass.get(:index, {:id => 1}.to_json)
37
+ end
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fdoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2011-11-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
18
- requirement: &70189854315380 !ruby/object:Gem::Requirement
18
+ requirement: &70196446801520 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70189854315380
26
+ version_requirements: *70196446801520
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json-schema
29
- requirement: &70189854314620 !ruby/object:Gem::Requirement
29
+ requirement: &70196446800760 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 1.0.1
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70189854314620
37
+ version_requirements: *70196446800760
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: kramdown
40
- requirement: &70189854313940 !ruby/object:Gem::Requirement
40
+ requirement: &70196446800080 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70189854313940
48
+ version_requirements: *70196446800080
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rake
51
- requirement: &70189854313440 !ruby/object:Gem::Requirement
51
+ requirement: &70196446799580 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70189854313440
59
+ version_requirements: *70196446799580
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &70189854312900 !ruby/object:Gem::Requirement
62
+ requirement: &70196446799040 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '2.5'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70189854312900
70
+ version_requirements: *70196446799040
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: nokogiri
73
- requirement: &70189854312420 !ruby/object:Gem::Requirement
73
+ requirement: &70196446798560 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *70189854312420
81
+ version_requirements: *70196446798560
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: cane
84
- requirement: &70189854311940 !ruby/object:Gem::Requirement
84
+ requirement: &70196446798060 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *70189854311940
92
+ version_requirements: *70196446798060
93
93
  description: A tool for documenting API endpoints.
94
94
  email: support@squareup.com
95
95
  executables:
@@ -120,6 +120,7 @@ files:
120
120
  - spec/fdoc/presenters/endpoint_presenter_spec.rb
121
121
  - spec/fdoc/presenters/service_presenter_spec.rb
122
122
  - spec/fdoc/service_spec.rb
123
+ - spec/fdoc/spec_watcher_spec.rb
123
124
  - spec/fixtures/members/add-PUT.fdoc
124
125
  - spec/fixtures/members/draft-POST.fdoc
125
126
  - spec/fixtures/members/list/complex-params-GET.fdoc
@@ -164,6 +165,7 @@ test_files:
164
165
  - spec/fdoc/presenters/endpoint_presenter_spec.rb
165
166
  - spec/fdoc/presenters/service_presenter_spec.rb
166
167
  - spec/fdoc/service_spec.rb
168
+ - spec/fdoc/spec_watcher_spec.rb
167
169
  - spec/fixtures/members/add-PUT.fdoc
168
170
  - spec/fixtures/members/draft-POST.fdoc
169
171
  - spec/fixtures/members/list/complex-params-GET.fdoc