fdoc 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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