http_stub 0.18.1 → 0.18.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75535217ff4857d46b0848a19809db63b7bfecbe
4
- data.tar.gz: ce77b9eb4347fe6713abdfd6d346aad8a81ac371
3
+ metadata.gz: 9b3e67c607aa3b80f5e886bd7de7fbbfd3749f72
4
+ data.tar.gz: f0f313f13ccd2d1e0b2eaf62292e2c293b5b2592
5
5
  SHA512:
6
- metadata.gz: c00f25eafc1aa46f84266e399d759c301d37937c07b6cadeef9cc70b7ac3d43ff4a87ac5c53d9ed3049f755f60da51839f164bcf1f890a4126da00574f553378
7
- data.tar.gz: 834af43f6a410d5b1e441e6fe80d0f10bfb517645534883cd5e9b8cbddc72251279052e279919bc91060c2c009a6915ae23a995302a0f1f0f9a30d36a6ead2d9
6
+ metadata.gz: e3f87569921e42a1272453d37ef65a5585c148ec081a943bc128af5cbff417e59440beedee64b21dc08af0f1c71b3a14f428fcc215903c92104b1ba40787abec
7
+ data.tar.gz: fb62118fd274913421bda1ef15a2776871a9af76dd2ad96f07b29b1a20417bc2ab60d102bd65ba1faaaefd91aeb7d21687a35dcb0c0a8587245d92eea760a91d
@@ -4,19 +4,31 @@ module HttpStub
4
4
 
5
5
  class EndpointTemplate
6
6
 
7
- delegate :match_requests, :schema, :respond_with, :trigger, :invoke, to: :@default_stub_builder
7
+ delegate :match_requests, :schema, :respond_with, :trigger, :invoke, to: :@template_stub_builder
8
8
 
9
- def initialize(server, response_defaults)
9
+ def initialize(server)
10
10
  @server = server
11
- @default_stub_builder = HttpStub::Configurer::DSL::StubBuilder.new(response_defaults)
11
+ @template_stub_builder = HttpStub::Configurer::DSL::StubBuilder.new
12
+ end
13
+
14
+ def build_stub(response_overrides={}, &block)
15
+ @server.build_stub { |stub| compose_stub(stub, response_overrides, &block) }
16
+ end
17
+
18
+ def add_stub!(response_overrides={}, &block)
19
+ @server.add_stub! { |stub| compose_stub(stub, response_overrides, &block) }
12
20
  end
13
21
 
14
22
  def add_scenario!(name, response_overrides={}, &block)
15
- @server.add_one_stub_scenario!(name) do |stub_builder|
16
- stub_builder.merge!(@default_stub_builder)
17
- stub_builder.respond_with(response_overrides)
18
- stub_builder.invoke(&block) if block_given?
19
- end
23
+ @server.add_one_stub_scenario!(name) { |stub| compose_stub(stub, response_overrides, &block) }
24
+ end
25
+
26
+ private
27
+
28
+ def compose_stub(stub_builder, response_overrides, &block)
29
+ stub_builder.merge!(@template_stub_builder)
30
+ stub_builder.respond_with(response_overrides)
31
+ stub_builder.invoke(&block) if block_given?
20
32
  end
21
33
 
22
34
  end
@@ -43,9 +43,7 @@ module HttpStub
43
43
  end
44
44
 
45
45
  def endpoint_template(&block)
46
- HttpStub::Configurer::DSL::EndpointTemplate.new(self, @response_defaults).tap do |template|
47
- template.invoke(&block)
48
- end
46
+ HttpStub::Configurer::DSL::EndpointTemplate.new(self).tap { |template| template.invoke(&block) }
49
47
  end
50
48
 
51
49
  def add_activator!(&block)
@@ -8,8 +8,8 @@ module HttpStub
8
8
 
9
9
  public
10
10
 
11
- def initialize(response_defaults)
12
- @response = response_defaults ? response_defaults.clone : {}
11
+ def initialize(response_defaults={})
12
+ @response = response_defaults.clone
13
13
  @triggers = []
14
14
  end
15
15
 
@@ -1,3 +1,3 @@
1
1
  module HttpStub
2
- VERSION = "0.18.1".freeze
2
+ VERSION = "0.18.2".freeze
3
3
  end
@@ -13,6 +13,13 @@ describe "Endpoint Template acceptance" do
13
13
  expect(response.code).to eql(404)
14
14
  end
15
15
 
16
+ it "registers any stubs added to the template" do
17
+ response = issue_request("custom_stub_uri")
18
+
19
+ expect(response.code).to eql(201)
20
+ expect(response.body).to eql("custom stub body")
21
+ end
22
+
16
23
  context "and a templated scenario is activated" do
17
24
 
18
25
  before(:example) { stub_server.activate!(scenario_name) }
@@ -21,7 +28,7 @@ describe "Endpoint Template acceptance" do
21
28
 
22
29
  let(:scenario_name) { "custom_request" }
23
30
 
24
- let(:response) { issue_request("custom_uri") }
31
+ let(:response) { issue_request("custom_scenario_uri") }
25
32
 
26
33
  it "registers a templated stub for the scenario" do
27
34
  expect(response.code).to eql(200)
@@ -38,7 +45,7 @@ describe "Endpoint Template acceptance" do
38
45
 
39
46
  it "registers a templated stub for the scenario" do
40
47
  expect(response.code).to eql(202)
41
- expect(response.body).to eql("custom body")
48
+ expect(response.body).to eql("custom scenario body")
42
49
  end
43
50
 
44
51
  end
@@ -1,17 +1,19 @@
1
1
  describe HttpStub::Configurer::DSL::EndpointTemplate do
2
2
 
3
- let(:stub_fixture) { HttpStub::StubFixture.new }
3
+ let(:server) { instance_double(HttpStub::Configurer::DSL::Server) }
4
+ let(:response_defaults) { {} }
5
+ let(:template_stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder) }
4
6
 
5
- let(:server) { instance_double(HttpStub::Configurer::DSL::Server) }
6
- let(:response_defaults) { {} }
7
- let(:default_stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder) }
8
-
9
- let(:endpoint_template) { HttpStub::Configurer::DSL::EndpointTemplate.new(server, response_defaults) }
7
+ let(:endpoint_template) { HttpStub::Configurer::DSL::EndpointTemplate.new(server) }
10
8
 
11
9
  before(:example) do
12
- allow(HttpStub::Configurer::DSL::StubBuilder).to(
13
- receive(:new).with(response_defaults).and_return(default_stub_builder)
14
- )
10
+ allow(HttpStub::Configurer::DSL::StubBuilder).to receive(:new).and_return(template_stub_builder)
11
+ end
12
+
13
+ it "creates a stub builder to hold the templated default values" do
14
+ expect(HttpStub::Configurer::DSL::StubBuilder).to receive(:new).with(no_args)
15
+
16
+ endpoint_template
15
17
  end
16
18
 
17
19
  describe "#match_requests" do
@@ -21,8 +23,8 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
21
23
 
22
24
  subject { endpoint_template.match_requests(uri, args) }
23
25
 
24
- it "delegates to the default stub builder" do
25
- expect(default_stub_builder).to receive(:match_requests).with(uri, args)
26
+ it "delegates to the templates stub builder" do
27
+ expect(template_stub_builder).to receive(:match_requests).with(uri, args)
26
28
 
27
29
  subject
28
30
  end
@@ -36,8 +38,8 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
36
38
 
37
39
  subject { endpoint_template.schema(type, definition) }
38
40
 
39
- it "delegates to the default stub builder" do
40
- expect(default_stub_builder).to receive(:schema).with(type, definition)
41
+ it "delegates to the templates stub builder" do
42
+ expect(template_stub_builder).to receive(:schema).with(type, definition)
41
43
 
42
44
  subject
43
45
  end
@@ -50,8 +52,8 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
50
52
 
51
53
  subject { endpoint_template.respond_with(args) }
52
54
 
53
- it "delegates to the default stub builder" do
54
- expect(default_stub_builder).to receive(:respond_with).with(args)
55
+ it "delegates to the templates stub builder" do
56
+ expect(template_stub_builder).to receive(:respond_with).with(args)
55
57
 
56
58
  subject
57
59
  end
@@ -64,8 +66,8 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
64
66
 
65
67
  subject { endpoint_template.trigger(trigger) }
66
68
 
67
- it "delegates to the default stub builder" do
68
- expect(default_stub_builder).to receive(:trigger).with(trigger)
69
+ it "delegates to the templates stub builder" do
70
+ expect(template_stub_builder).to receive(:trigger).with(trigger)
69
71
 
70
72
  subject
71
73
  end
@@ -79,8 +81,8 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
79
81
 
80
82
  subject { endpoint_template.invoke(&block) }
81
83
 
82
- it "delegates to the default stub builder" do
83
- expect(default_stub_builder).to receive(:invoke).and_yield
84
+ it "delegates to the templates stub builder" do
85
+ expect(template_stub_builder).to receive(:invoke).and_yield
84
86
  expect(block_verifier).to receive(:verify)
85
87
 
86
88
  subject
@@ -88,32 +90,19 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
88
90
 
89
91
  end
90
92
 
91
- describe "#add_scenario!" do
92
-
93
- let(:name) { "some_scenario_name" }
94
- let(:stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder).as_null_object }
95
-
96
- before(:example) { allow(server).to receive(:add_one_stub_scenario!).and_yield(stub_builder) }
97
-
98
- subject { endpoint_template.add_scenario!(name) }
99
-
100
- it "add a one stub scenario to the server" do
101
- expect(server).to receive(:add_one_stub_scenario!).with(name)
102
-
103
- subject
104
- end
93
+ shared_examples_for "an endpoint template method composing a stub" do
105
94
 
106
95
  it "merges the added stub with the default stub builder" do
107
- expect(stub_builder).to receive(:merge!).with(default_stub_builder)
96
+ expect(stub_builder).to receive(:merge!).with(template_stub_builder)
108
97
 
109
- subject
98
+ subject_without_overrides_and_block
110
99
  end
111
100
 
112
101
  context "when response overrides are provided" do
113
102
 
114
103
  let(:response_overrides) { { status: 302 } }
115
104
 
116
- subject { endpoint_template.add_scenario!(name, response_overrides) }
105
+ subject { subject_with_response_overrides(response_overrides) }
117
106
 
118
107
  it "informs the stub builder to respond with the response overrides" do
119
108
  expect(stub_builder).to receive(:respond_with).with(response_overrides)
@@ -125,7 +114,7 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
125
114
 
126
115
  context "when response overrides are not provided" do
127
116
 
128
- subject { endpoint_template.add_scenario!(name) }
117
+ subject { subject_without_overrides_and_block }
129
118
 
130
119
  it "does not change the stub builder by requesting it respond with an empty hash" do
131
120
  expect(stub_builder).to receive(:respond_with).with({})
@@ -139,7 +128,7 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
139
128
  expect(stub_builder).to receive(:merge!).ordered
140
129
  expect(stub_builder).to receive(:respond_with).ordered
141
130
 
142
- subject
131
+ subject_without_overrides_and_block
143
132
  end
144
133
 
145
134
  context "when a block is provided" do
@@ -147,7 +136,7 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
147
136
  let(:block_verifier) { double("BlockVerifier") }
148
137
  let(:block) { lambda { block_verifier.verify } }
149
138
 
150
- subject { endpoint_template.add_scenario!(name, &block) }
139
+ subject { subject_with_block(&block) }
151
140
 
152
141
  it "requests the added stub builder invoke the provided block" do
153
142
  expect(stub_builder).to receive(:invoke).and_yield
@@ -167,7 +156,7 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
167
156
 
168
157
  context "when a block is not provided" do
169
158
 
170
- subject { endpoint_template.add_scenario!(name) }
159
+ subject { subject_without_overrides_and_block }
171
160
 
172
161
  it "does not requests the added stub builder invoke a block" do
173
162
  expect(stub_builder).not_to receive(:invoke)
@@ -179,4 +168,89 @@ describe HttpStub::Configurer::DSL::EndpointTemplate do
179
168
 
180
169
  end
181
170
 
171
+ describe "#build_stub" do
172
+
173
+ let(:stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder).as_null_object }
174
+
175
+ before(:example) { allow(server).to receive(:build_stub).and_yield(stub_builder) }
176
+
177
+ def subject_without_overrides_and_block
178
+ endpoint_template.build_stub
179
+ end
180
+
181
+ def subject_with_response_overrides(overrides)
182
+ endpoint_template.build_stub(overrides)
183
+ end
184
+
185
+ def subject_with_block(&block)
186
+ endpoint_template.build_stub(&block)
187
+ end
188
+
189
+ it "builds a stub on the server" do
190
+ expect(server).to receive(:build_stub)
191
+
192
+ subject_without_overrides_and_block
193
+ end
194
+
195
+ it_behaves_like "an endpoint template method composing a stub"
196
+
197
+ end
198
+
199
+ describe "#add_stub!" do
200
+
201
+ let(:stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder).as_null_object }
202
+
203
+ before(:example) { allow(server).to receive(:add_stub!).and_yield(stub_builder) }
204
+
205
+ def subject_without_overrides_and_block
206
+ endpoint_template.add_stub!
207
+ end
208
+
209
+ def subject_with_response_overrides(overrides)
210
+ endpoint_template.add_stub!(overrides)
211
+ end
212
+
213
+ def subject_with_block(&block)
214
+ endpoint_template.add_stub!(&block)
215
+ end
216
+
217
+ it "builds a stub on the server" do
218
+ expect(server).to receive(:add_stub!)
219
+
220
+ subject_without_overrides_and_block
221
+ end
222
+
223
+ it_behaves_like "an endpoint template method composing a stub"
224
+
225
+ end
226
+
227
+ describe "#add_scenario!" do
228
+
229
+ let(:name) { "some_scenario_name" }
230
+ let(:stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder).as_null_object }
231
+
232
+ before(:example) { allow(server).to receive(:add_one_stub_scenario!).and_yield(stub_builder) }
233
+
234
+ def subject_without_overrides_and_block
235
+ endpoint_template.add_scenario!(name)
236
+ end
237
+
238
+ def subject_with_response_overrides(overrides)
239
+ endpoint_template.add_scenario!(name, overrides)
240
+ end
241
+
242
+ def subject_with_block(&block)
243
+ endpoint_template.add_scenario!(name, &block)
244
+ end
245
+
246
+ it "adds a one stub scenario to the server" do
247
+ expect(server).to receive(:add_one_stub_scenario!).with(name)
248
+
249
+ subject_without_overrides_and_block
250
+ end
251
+
252
+ it_behaves_like "an endpoint template method composing a stub"
253
+
254
+ end
255
+
182
256
  end
@@ -227,42 +227,14 @@ describe HttpStub::Configurer::DSL::Server do
227
227
  subject
228
228
  end
229
229
 
230
- it "returns the created endpoint template" do
231
- expect(subject).to eql(endpoint_template)
232
- end
233
-
234
230
  it "creates a template for the server" do
235
- expect(HttpStub::Configurer::DSL::EndpointTemplate).to(
236
- receive(:new).with(server, anything).and_return(endpoint_template)
237
- )
231
+ expect(HttpStub::Configurer::DSL::EndpointTemplate).to receive(:new).with(server).and_return(endpoint_template)
238
232
 
239
233
  subject
240
234
  end
241
235
 
242
- context "when response defaults have been established" do
243
-
244
- include_context "establish response defaults"
245
-
246
- it "creates a template with the defaults" do
247
- expect(HttpStub::Configurer::DSL::EndpointTemplate).to(
248
- receive(:new).with(anything, response_defaults).and_return(endpoint_template)
249
- )
250
-
251
- subject
252
- end
253
-
254
- end
255
-
256
- context "when no response defaults have been established" do
257
-
258
- it "creates a template with empty response defaults" do
259
- expect(HttpStub::Configurer::DSL::EndpointTemplate).to(
260
- receive(:new).with(anything, {}).and_return(endpoint_template)
261
- )
262
-
263
- subject
264
- end
265
-
236
+ it "returns the created endpoint template" do
237
+ expect(subject).to eql(endpoint_template)
266
238
  end
267
239
 
268
240
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_stub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.18.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ueckerman