http_stub 0.15.1 → 0.15.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 438c42456ebda9bd71a4c56735be06a71c62ef68
4
- data.tar.gz: d9c2910a45e9c6ec166e58d7d02dd1f8a2d31357
3
+ metadata.gz: 473cfd88f509d2e18bbf47ffbcd7d013d5bae137
4
+ data.tar.gz: 3c2afdb69d93618e52df58e22a7e1fd9de623756
5
5
  SHA512:
6
- metadata.gz: 79748781d578ca9908fb56d818605e2ad1670958d69c9f47a5b1d692227d156f34fa4ed1f22caf26f0ef07a5838bbe98ba9190d3bae21ba79d4b779101562107
7
- data.tar.gz: 719ec839fe7f02751cf4ea178e33daac0a9502c43ec3bac543c5f7f319e756decb8e0ab05b08fb2cc79a4bed2bb1d3938ac15476eecd3b1414114a96ecb1f811
6
+ metadata.gz: e024dcbeb70730ee13353fde8845fff7f6b2bedb3a668d3f33428f5069c40b3f0ed3a7104ef6c6f803644fe8f5bf42a74b6511524e07ff33cec4c00744f40f97
7
+ data.tar.gz: d191926b0caf32e8553cc7c109912f23ada60a360f211c682214476bfca9ea41f269bce5ebce0fae1d615c1b6da4b9660d1fe7f07e46108c49428f28ca4b61fa
data/lib/http_stub.rb CHANGED
@@ -31,8 +31,8 @@ require_relative 'http_stub/server/stub_response'
31
31
  require_relative 'http_stub/server/response'
32
32
  require_relative 'http_stub/server/stub_triggers'
33
33
  require_relative 'http_stub/server/stub'
34
- require_relative 'http_stub/server/stub_factory'
35
34
  require_relative 'http_stub/server/stub_activator'
35
+ require_relative 'http_stub/server/request_parser'
36
36
  require_relative 'http_stub/server/registry'
37
37
  require_relative 'http_stub/server/stub_registry'
38
38
  require_relative 'http_stub/server/response_pipeline'
@@ -1,14 +1,14 @@
1
1
  module HttpStub
2
2
  module Server
3
3
 
4
- class StubFactory
4
+ class RequestParser
5
5
 
6
6
  class << self
7
7
 
8
- def create(request)
9
- payload = JSON.parse(request.params["payload"] || request.body.read)
10
- consolidated_payload = consolidate_files_into_payload(payload, request)
11
- HttpStub::Server::Stub.new(consolidated_payload)
8
+ def parse(request)
9
+ JSON.parse(request.params["payload"] || request.body.read).tap do |payload|
10
+ consolidate_files_into_payload(payload, request)
11
+ end
12
12
  end
13
13
 
14
14
  private
@@ -19,7 +19,6 @@ module HttpStub
19
19
  payload["triggers"].each do |trigger_payload|
20
20
  consolidate_files_into_payload(trigger_payload, request)
21
21
  end if payload["triggers"]
22
- payload
23
22
  end
24
23
 
25
24
  end
@@ -3,10 +3,6 @@ module HttpStub
3
3
 
4
4
  class StubActivator
5
5
 
6
- def self.create_from(request)
7
- self.new(JSON.parse(request.params["payload"] || request.body.read))
8
- end
9
-
10
6
  def initialize(args)
11
7
  @args = args
12
8
  @stub = HttpStub::Server::Stub.new(args)
@@ -9,7 +9,8 @@ module HttpStub
9
9
  end
10
10
 
11
11
  def register(request)
12
- @stub_activator_registry.add(HttpStub::Server::StubActivator.create_from(request), request)
12
+ stub_activator = HttpStub::Server::StubActivator.new(HttpStub::Server::RequestParser.parse(request))
13
+ @stub_activator_registry.add(stub_activator, request)
13
14
  HttpStub::Server::Response::SUCCESS
14
15
  end
15
16
 
@@ -8,7 +8,8 @@ module HttpStub
8
8
  end
9
9
 
10
10
  def register(request)
11
- @registry.add(HttpStub::Server::StubFactory.create(request), request)
11
+ stub = HttpStub::Server::Stub.new(HttpStub::Server::RequestParser.parse(request))
12
+ @registry.add(stub, request)
12
13
  HttpStub::Server::Response::SUCCESS
13
14
  end
14
15
 
@@ -1,3 +1,3 @@
1
1
  module HttpStub
2
- VERSION = "0.15.1".freeze
2
+ VERSION = "0.15.2".freeze
3
3
  end
@@ -19,15 +19,38 @@ describe HttpStub::Configurer, "when the server is running" do
19
19
 
20
20
  context "and a stub is activated" do
21
21
 
22
- before(:example) { configurer.activate!("/an_activator") }
22
+ context "and the response contains text" do
23
23
 
24
- context "and the stub request is made" do
24
+ before(:example) { configurer.activate!("/an_activator") }
25
25
 
26
- let(:response) { HTTParty.get("#{server_uri}/stub_path") }
26
+ context "and the stub request is made" do
27
+
28
+ let(:response) { HTTParty.get("#{server_uri}/stub_path") }
29
+
30
+ it "replays the stubbed response" do
31
+ expect(response.code).to eql(200)
32
+ expect(response.body).to eql("Stub activator body")
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ context "and the response contains a file" do
40
+
41
+ let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponse.new }
42
+
43
+ before(:example) { configurer.activate!("/a_file_activator") }
44
+
45
+ context "and the stub request is made" do
46
+
47
+ let(:response) { HTTParty.get("#{server_uri}/activated_response_with_file") }
48
+
49
+ it "replays the stubbed response" do
50
+ expect(response.code).to eql(200)
51
+ expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
52
+ end
27
53
 
28
- it "replays the stubbed response" do
29
- expect(response.code).to eql(200)
30
- expect(response.body).to eql("Stub activator body")
31
54
  end
32
55
 
33
56
  end
@@ -584,7 +607,7 @@ describe HttpStub::Configurer, "when the server is running" do
584
607
 
585
608
  it "replays the triggered response" do
586
609
  expect(response.code).to eql(201)
587
- assert_response_contains_file(pdf_file_path)
610
+ expect_response_to_contain_file(pdf_file_path)
588
611
  end
589
612
 
590
613
  end
@@ -655,7 +678,7 @@ describe HttpStub::Configurer, "when the server is running" do
655
678
  end
656
679
 
657
680
  it "responds with the file" do
658
- assert_response_contains_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
681
+ expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
659
682
  end
660
683
 
661
684
  end
@@ -781,7 +804,7 @@ describe HttpStub::Configurer, "when the server is running" do
781
804
 
782
805
  end
783
806
 
784
- def assert_response_contains_file(path)
807
+ def expect_response_to_contain_file(path)
785
808
  response_file = Tempfile.new(File.basename(path)).tap do |file|
786
809
  file.write(response.parsed_response)
787
810
  file.flush
@@ -0,0 +1,90 @@
1
+ describe HttpStub::Server::RequestParser do
2
+
3
+ let(:request_parser) { HttpStub::Server::RequestParser }
4
+
5
+ describe "::parse" do
6
+
7
+ let(:params) { {} }
8
+ let(:body_hash) { {} }
9
+ let(:request) { instance_double(Rack::Request, params: params, body: StringIO.new(body_hash.to_json)) }
10
+
11
+ subject { request_parser.parse(request) }
12
+
13
+ context "when the request contains a payload parameter" do
14
+
15
+ let(:payload) { HttpStub::StubFixture.new.server_payload }
16
+ let(:params) { { "payload" => payload.to_json } }
17
+
18
+ it "returns the payload" do
19
+ expect(subject).to eql(payload)
20
+ end
21
+
22
+ end
23
+
24
+ context "when the request body contains the payload (for API backwards compatibility)" do
25
+
26
+ let(:body_hash) { HttpStub::StubFixture.new.server_payload }
27
+
28
+ it "returns the request body" do
29
+ expect(subject).to eql(body_hash)
30
+ end
31
+
32
+ end
33
+
34
+ context "when the payload contains a response file and has a corresponding file parameter" do
35
+
36
+ let(:payload_fixture) { HttpStub::StubFixture.new.with_file_response! }
37
+ let(:payload) { payload_fixture.server_payload }
38
+ let(:file_params) { { "response_file_#{payload_fixture.id}" => payload_fixture.file_parameter } }
39
+ let(:params) { { "payload" => payload.to_json }.merge(file_params) }
40
+
41
+ it "returns the payload with a response body that contains the file parameter value" do
42
+ expected_payload = payload.clone.tap { |hash| hash["response"]["body"] = payload_fixture.file_parameter }
43
+
44
+ expect(subject).to eql(expected_payload)
45
+ end
46
+
47
+ end
48
+
49
+ context "when the payload contains triggers" do
50
+
51
+ let(:payload_fixture) { HttpStub::StubFixture.new.with_triggers!(trigger_fixtures) }
52
+ let(:payload) { payload_fixture.server_payload }
53
+
54
+ context "and the trigger payloads contain response text" do
55
+
56
+ let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_text_response! } }
57
+ let(:params) { { "payload" => payload.to_json } }
58
+
59
+ it "returns the payload unchanged" do
60
+ expect(subject).to eql(payload)
61
+ end
62
+
63
+ end
64
+
65
+ context "and the trigger payloads contain a response file with corresponding file parameters" do
66
+
67
+ let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_file_response! } }
68
+ let(:file_params) do
69
+ trigger_fixtures.reduce({}) do |result, fixture|
70
+ result.merge("response_file_#{fixture.id}" => fixture.file_parameter)
71
+ end
72
+ end
73
+ let(:params) { { "payload" => payload.to_json }.merge(file_params) }
74
+
75
+ it "returns the payload with the trigger response bodies replaced by the files" do
76
+ expected_payload = payload_fixture.server_payload
77
+ expected_payload["triggers"].zip(trigger_fixtures.map(&:file_parameter)).each do |trigger, file_param|
78
+ trigger["response"]["body"] = file_param
79
+ end
80
+
81
+ expect(subject).to eql(expected_payload)
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+
88
+ end
89
+
90
+ end
@@ -1,21 +1,31 @@
1
1
  describe HttpStub::Server::StubActivatorController do
2
2
 
3
- let(:request) { double("HttpRequest") }
4
- let(:the_stub) { double(HttpStub::Server::Stub) }
5
- let(:stub_activator) { double(HttpStub::Server::StubActivator, the_stub: the_stub) }
6
- let(:stub_activator_registry) { double("HttpStub::Server::StubActivatorRegistry").as_null_object }
7
- let(:stub_registry) { double("HttpStub::Server::StubRegistry").as_null_object }
3
+ let(:request) { instance_double(Rack::Request) }
4
+ let(:payload) { HttpStub::StubFixture.new.server_payload.merge("activation_uri" => "/some/activation/uri") }
5
+ let(:the_stub) { instance_double(HttpStub::Server::Stub) }
6
+ let(:stub_activator) { instance_double(HttpStub::Server::StubActivator, the_stub: the_stub) }
7
+ let(:stub_activator_registry) { instance_double(HttpStub::Server::Registry).as_null_object }
8
+ let(:stub_registry) { instance_double(HttpStub::Server::StubRegistry).as_null_object }
8
9
 
9
10
  let(:controller) { HttpStub::Server::StubActivatorController.new(stub_activator_registry, stub_registry) }
10
11
 
11
- before(:example) { allow(HttpStub::Server::StubActivator).to receive(:create_from).and_return(stub_activator) }
12
+ before(:example) do
13
+ allow(HttpStub::Server::RequestParser).to receive(:parse).and_return(payload)
14
+ allow(HttpStub::Server::StubActivator).to receive(:new).and_return(stub_activator)
15
+ end
12
16
 
13
17
  describe "#register" do
14
18
 
15
19
  subject { controller.register(request) }
16
20
 
17
- it "creates a stub activator from the provided request" do
18
- expect(HttpStub::Server::StubActivator).to receive(:create_from).with(request).and_return(stub_activator)
21
+ it "parses the payload from the request" do
22
+ expect(HttpStub::Server::RequestParser).to receive(:parse).with(request).and_return(payload)
23
+
24
+ subject
25
+ end
26
+
27
+ it "creates a stub activator with the parsed payload" do
28
+ expect(HttpStub::Server::StubActivator).to receive(:new).with(payload).and_return(stub_activator)
19
29
 
20
30
  subject
21
31
  end
@@ -8,43 +8,12 @@ describe HttpStub::Server::StubActivator do
8
8
 
9
9
  before(:example) { allow(HttpStub::Server::Stub).to receive(:new).and_return(underlying_stub) }
10
10
 
11
- describe "::create_from" do
11
+ describe "#constructor" do
12
12
 
13
- let(:payload) { args.to_json }
14
-
15
- subject { HttpStub::Server::StubActivator.create_from(request) }
16
-
17
- shared_context "verification a stub activator is created from a request" do
18
-
19
- it "creates a stub activator with JSON parsed from the request payload" do
20
- expect(HttpStub::Server::StubActivator).to receive(:new).with(args)
21
-
22
- subject
23
- end
24
-
25
- it "returns the created stub activator" do
26
- created_stub_activator = instance_double(HttpStub::Server::StubActivator)
27
- allow(HttpStub::Server::StubActivator).to receive(:new).and_return(created_stub_activator)
28
-
29
- expect(subject).to eql(created_stub_activator)
30
- end
31
-
32
- end
33
-
34
- context "when the request body contains the payload" do
35
-
36
- let(:request) { double("HttpRequest", params: {}, body: double("RequestBody", read: payload)) }
37
-
38
- include_context "verification a stub activator is created from a request"
39
-
40
- end
41
-
42
- context "when the request contains a payload parameter" do
43
-
44
- let(:request) { double("HttpRequest", params: { "payload" => payload }) }
45
-
46
- include_context "verification a stub activator is created from a request"
13
+ it "creates an underlying stub from the provided arguments" do
14
+ expect(HttpStub::Server::Stub).to receive(:new).with(args)
47
15
 
16
+ stub_activator
48
17
  end
49
18
 
50
19
  end
@@ -1,20 +1,30 @@
1
1
  describe HttpStub::Server::StubController do
2
2
 
3
- let(:request) { double("HttpRequest") }
4
- let(:response) { double(HttpStub::Server::Response) }
5
- let(:the_stub) { double(HttpStub::Server::Stub, response: response) }
6
- let(:registry) { double(HttpStub::Server::Registry).as_null_object }
3
+ let(:request) { instance_double(Rack::Request) }
4
+ let(:payload) { HttpStub::StubFixture.new.server_payload }
5
+ let(:response) { instance_double(HttpStub::Server::StubResponse::Base) }
6
+ let(:the_stub) { instance_double(HttpStub::Server::Stub, response: response) }
7
+ let(:registry) { instance_double(HttpStub::Server::StubRegistry).as_null_object }
7
8
 
8
9
  let(:controller) { HttpStub::Server::StubController.new(registry) }
9
10
 
10
- before(:example) { allow(HttpStub::Server::StubFactory).to receive(:create).and_return(the_stub) }
11
+ before(:example) do
12
+ allow(HttpStub::Server::RequestParser).to receive(:parse).and_return(payload)
13
+ allow(HttpStub::Server::Stub).to receive(:new).and_return(the_stub)
14
+ end
11
15
 
12
16
  describe "#register" do
13
17
 
14
18
  subject { controller.register(request) }
15
19
 
16
- it "creates a stub from the provided request via the factory" do
17
- expect(HttpStub::Server::StubFactory).to receive(:create).with(request).and_return(the_stub)
20
+ it "parses the payload from the request" do
21
+ expect(HttpStub::Server::RequestParser).to receive(:parse).with(request).and_return(payload)
22
+
23
+ subject
24
+ end
25
+
26
+ it "creates a stub with the parsed payload" do
27
+ expect(HttpStub::Server::Stub).to receive(:new).with(payload).and_return(the_stub)
18
28
 
19
29
  subject
20
30
  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.15.1
4
+ version: 0.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ueckerman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-19 00:00:00.000000000 Z
12
+ date: 2015-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -290,6 +290,7 @@ files:
290
290
  - "./lib/http_stub/server/regexp_value_matcher.rb"
291
291
  - "./lib/http_stub/server/registry.rb"
292
292
  - "./lib/http_stub/server/request_header_parser.rb"
293
+ - "./lib/http_stub/server/request_parser.rb"
293
294
  - "./lib/http_stub/server/response.rb"
294
295
  - "./lib/http_stub/server/response_pipeline.rb"
295
296
  - "./lib/http_stub/server/string_value_matcher.rb"
@@ -297,7 +298,6 @@ files:
297
298
  - "./lib/http_stub/server/stub_activator.rb"
298
299
  - "./lib/http_stub/server/stub_activator_controller.rb"
299
300
  - "./lib/http_stub/server/stub_controller.rb"
300
- - "./lib/http_stub/server/stub_factory.rb"
301
301
  - "./lib/http_stub/server/stub_headers.rb"
302
302
  - "./lib/http_stub/server/stub_parameters.rb"
303
303
  - "./lib/http_stub/server/stub_registry.rb"
@@ -350,13 +350,13 @@ files:
350
350
  - "./spec/lib/http_stub/server/regexp_value_matcher_spec.rb"
351
351
  - "./spec/lib/http_stub/server/registry_spec.rb"
352
352
  - "./spec/lib/http_stub/server/request_header_parser_spec.rb"
353
+ - "./spec/lib/http_stub/server/request_parser_spec.rb"
353
354
  - "./spec/lib/http_stub/server/response_pipeline_spec.rb"
354
355
  - "./spec/lib/http_stub/server/response_spec.rb"
355
356
  - "./spec/lib/http_stub/server/string_value_matcher_spec.rb"
356
357
  - "./spec/lib/http_stub/server/stub_activator_controller_spec.rb"
357
358
  - "./spec/lib/http_stub/server/stub_activator_spec.rb"
358
359
  - "./spec/lib/http_stub/server/stub_controller_spec.rb"
359
- - "./spec/lib/http_stub/server/stub_factory_spec.rb"
360
360
  - "./spec/lib/http_stub/server/stub_headers_spec.rb"
361
361
  - "./spec/lib/http_stub/server/stub_parameters_spec.rb"
362
362
  - "./spec/lib/http_stub/server/stub_registry_integration_spec.rb"
@@ -435,13 +435,13 @@ test_files:
435
435
  - "./spec/lib/http_stub/server/regexp_value_matcher_spec.rb"
436
436
  - "./spec/lib/http_stub/server/registry_spec.rb"
437
437
  - "./spec/lib/http_stub/server/request_header_parser_spec.rb"
438
+ - "./spec/lib/http_stub/server/request_parser_spec.rb"
438
439
  - "./spec/lib/http_stub/server/response_pipeline_spec.rb"
439
440
  - "./spec/lib/http_stub/server/response_spec.rb"
440
441
  - "./spec/lib/http_stub/server/string_value_matcher_spec.rb"
441
442
  - "./spec/lib/http_stub/server/stub_activator_controller_spec.rb"
442
443
  - "./spec/lib/http_stub/server/stub_activator_spec.rb"
443
444
  - "./spec/lib/http_stub/server/stub_controller_spec.rb"
444
- - "./spec/lib/http_stub/server/stub_factory_spec.rb"
445
445
  - "./spec/lib/http_stub/server/stub_headers_spec.rb"
446
446
  - "./spec/lib/http_stub/server/stub_parameters_spec.rb"
447
447
  - "./spec/lib/http_stub/server/stub_registry_integration_spec.rb"
@@ -1,117 +0,0 @@
1
- describe HttpStub::Server::StubFactory do
2
-
3
- describe "::create" do
4
-
5
- let(:params) { {} }
6
- let(:body_hash) { {} }
7
- let(:request) { instance_double(Rack::Request, params: params, body: StringIO.new(body_hash.to_json)) }
8
-
9
- subject { HttpStub::Server::StubFactory.create(request) }
10
-
11
- shared_context "returns the created stub" do
12
-
13
- it "returns the created stub" do
14
- stub = instance_double(HttpStub::Server::Stub)
15
- allow(HttpStub::Server::Stub).to receive(:new).and_return(stub)
16
-
17
- expect(subject).to eql(stub)
18
- end
19
-
20
- end
21
-
22
- context "when the request contains a payload parameter" do
23
-
24
- let(:payload) { HttpStub::StubFixture.new.server_payload }
25
- let(:params) { { "payload" => payload.to_json } }
26
-
27
- it "creates the stub with the payload" do
28
- expect(HttpStub::Server::Stub).to receive(:new).with(payload)
29
-
30
- subject
31
- end
32
-
33
- include_context "returns the created stub"
34
-
35
- end
36
-
37
- context "when the request body contains the payload (for API backwards compatibility)" do
38
-
39
- let(:body_hash) { HttpStub::StubFixture.new.server_payload }
40
-
41
- it "creates the stub with the request body" do
42
- expect(HttpStub::Server::Stub).to receive(:new).with(body_hash)
43
-
44
- subject
45
- end
46
-
47
- include_context "returns the created stub"
48
-
49
- end
50
-
51
- context "when a stub payload contains a response file and has a corresponding file parameter" do
52
-
53
- let(:stub_fixture) { HttpStub::StubFixture.new.with_file_response! }
54
- let(:payload) { stub_fixture.server_payload }
55
- let(:file_params) { { "response_file_#{stub_fixture.id}" => stub_fixture.file_parameter } }
56
- let(:params) { { "payload" => payload.to_json }.merge(file_params) }
57
-
58
- it "creates the stub with a response body that contains the file parameter value" do
59
- expected_args = payload.clone.tap { |hash| hash["response"]["body"] = stub_fixture.file_parameter }
60
- expect(HttpStub::Server::Stub).to receive(:new).with(expected_args)
61
-
62
- subject
63
- end
64
-
65
- include_context "returns the created stub"
66
-
67
- end
68
-
69
- context "when a stub payload contains triggers" do
70
-
71
- let(:stub_fixture) { HttpStub::StubFixture.new.with_triggers!(trigger_fixtures) }
72
- let(:payload) { stub_fixture.server_payload }
73
-
74
- context "and the trigger payloads contain response text" do
75
-
76
- let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_text_response! } }
77
- let(:params) { { "payload" => payload.to_json } }
78
-
79
- it "creates the stub with the stub payload unchanged" do
80
- expect(HttpStub::Server::Stub).to receive(:new).with(payload)
81
-
82
- subject
83
- end
84
-
85
- include_context "returns the created stub"
86
-
87
- end
88
-
89
- context "and the trigger payloads contain a response file with corresponding file parameters" do
90
-
91
- let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_file_response! } }
92
- let(:file_params) do
93
- trigger_fixtures.reduce({}) do |result, fixture|
94
- result.merge("response_file_#{fixture.id}" => fixture.file_parameter)
95
- end
96
- end
97
- let(:params) { { "payload" => payload.to_json }.merge(file_params) }
98
-
99
- it "creates the stub with the trigger response bodies replaced by the files" do
100
- expected_args = stub_fixture.server_payload
101
- expected_args["triggers"].zip(trigger_fixtures.map(&:file_parameter)).each do |trigger, file_param|
102
- trigger["response"]["body"] = file_param
103
- end
104
- expect(HttpStub::Server::Stub).to receive(:new).with(expected_args)
105
-
106
- subject
107
- end
108
-
109
- include_context "returns the created stub"
110
-
111
- end
112
-
113
- end
114
-
115
- end
116
-
117
- end