pact 1.0.26 → 1.0.27
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/CHANGELOG.md +14 -0
- data/Gemfile.lock +1 -1
- data/README.md +5 -3
- data/lib/pact/consumer/mock_service/interaction_mismatch.rb +16 -3
- data/lib/pact/consumer/mock_service/interaction_replay.rb +3 -8
- data/lib/pact/consumer_contract/interaction.rb +4 -0
- data/lib/pact/matchers/diff_decorator.rb +84 -0
- data/lib/pact/matchers/matchers.rb +50 -7
- data/lib/pact/provider.rb +1 -0
- data/lib/pact/provider/pact_spec_runner.rb +2 -0
- data/lib/pact/provider/print_missing_provider_states.rb +30 -0
- data/lib/pact/provider/provider_state_proxy.rb +35 -0
- data/lib/pact/provider/rspec.rb +2 -2
- data/lib/pact/provider/test_methods.rb +3 -18
- data/lib/pact/provider/world.rb +19 -0
- data/lib/pact/templates/provider_state.erb +15 -0
- data/lib/pact/version.rb +1 -1
- data/{scratchpad.txt → scratchpad.rb} +17 -1
- data/spec/integration/consumer_spec.rb +2 -2
- data/spec/lib/pact/matchers/diff_decorator_spec.rb +80 -0
- data/spec/lib/pact/matchers/matchers_spec.rb +313 -308
- data/spec/lib/pact/provider/print_missing_provider_states_spec.rb +19 -0
- data/spec/lib/pact/provider/provider_state_proxy_spec.rb +60 -0
- data/spec/lib/pact/provider/world_spec.rb +33 -0
- data/spec/support/missing_provider_states_output.txt +25 -0
- metadata +20 -7
- data/spec/lib/pact/provider/test_methods_spec.rb +0 -20
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact/provider/print_missing_provider_states'
|
|
3
|
+
|
|
4
|
+
module Pact
|
|
5
|
+
module Provider
|
|
6
|
+
describe PrintMissingProviderStates do
|
|
7
|
+
|
|
8
|
+
describe "text" do
|
|
9
|
+
let(:missing_provider_states) { {'Consumer 1' => ['state1','state2'], 'Consumer 2' => ['state3']} }
|
|
10
|
+
let(:expected_output) { File.read("./spec/support/missing_provider_states_output.txt")}
|
|
11
|
+
subject { PrintMissingProviderStates.text missing_provider_states }
|
|
12
|
+
it "returns the text" do
|
|
13
|
+
expect(subject).to include expected_output
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact/provider/provider_state_proxy'
|
|
3
|
+
|
|
4
|
+
module Pact
|
|
5
|
+
module Provider
|
|
6
|
+
describe ProviderStateProxy do
|
|
7
|
+
|
|
8
|
+
let(:provider_state_proxy) { ProviderStateProxy.new }
|
|
9
|
+
|
|
10
|
+
describe "get" do
|
|
11
|
+
let(:name) { "some state" }
|
|
12
|
+
let(:options) { { :for => 'some consumer'} }
|
|
13
|
+
let(:provider_state) { double("provider_state")}
|
|
14
|
+
|
|
15
|
+
subject { provider_state_proxy.get name, options }
|
|
16
|
+
|
|
17
|
+
before do
|
|
18
|
+
ProviderState.stub(:get).and_return(provider_state)
|
|
19
|
+
end
|
|
20
|
+
context "when the provider state exists" do
|
|
21
|
+
|
|
22
|
+
it "retrieves the provider state from ProviderState" do
|
|
23
|
+
ProviderState.should_receive(:get).with(name, options).and_return(provider_state)
|
|
24
|
+
subject
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "returns the state" do
|
|
28
|
+
expect(subject).to eq provider_state
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when the state does not exist" do
|
|
34
|
+
|
|
35
|
+
let(:provider_state) { nil }
|
|
36
|
+
let(:expected_missing_provider_states) { {"some consumer" => ["some state"]} }
|
|
37
|
+
|
|
38
|
+
it "raises an error" do
|
|
39
|
+
expect { subject }.to raise_error /Could not find.*some state.*consumer.*/
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "records the provider state as missing" do
|
|
43
|
+
subject rescue nil
|
|
44
|
+
expect(provider_state_proxy.missing_provider_states).to eq expected_missing_provider_states
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "when the same missing provider state is requested" do
|
|
48
|
+
it "ensures the list only contains unique entries" do
|
|
49
|
+
subject rescue nil
|
|
50
|
+
subject rescue nil
|
|
51
|
+
expect(provider_state_proxy.missing_provider_states['some consumer'].size).to eq 1
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact/provider/world'
|
|
3
|
+
|
|
4
|
+
describe Pact do
|
|
5
|
+
describe ".world" do
|
|
6
|
+
it "returns a world" do
|
|
7
|
+
expect(Pact.world).to be_instance_of Pact::Provider::World
|
|
8
|
+
end
|
|
9
|
+
it "returns the same world each time" do
|
|
10
|
+
expect(Pact.world).to be Pact.world
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module Pact
|
|
17
|
+
module Provider
|
|
18
|
+
describe World do
|
|
19
|
+
|
|
20
|
+
subject { World.new }
|
|
21
|
+
describe "provider_states" do
|
|
22
|
+
it "returns a provider state proxy" do
|
|
23
|
+
expect(subject.provider_states).to be_instance_of ProviderStateProxy
|
|
24
|
+
end
|
|
25
|
+
it "returns the same object each time" do
|
|
26
|
+
expect(subject.provider_states).to be subject.provider_states
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Pact.provider_states_for "Consumer 1" do
|
|
2
|
+
|
|
3
|
+
provider_state "state1" do
|
|
4
|
+
set_up do
|
|
5
|
+
# Your set up code goes here
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
provider_state "state2" do
|
|
10
|
+
set_up do
|
|
11
|
+
# Your set up code goes here
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Pact.provider_states_for "Consumer 2" do
|
|
18
|
+
|
|
19
|
+
provider_state "state3" do
|
|
20
|
+
set_up do
|
|
21
|
+
# Your set up code goes here
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pact
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.27
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ authors:
|
|
|
13
13
|
autorequire:
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
|
-
date: 2013-12-
|
|
16
|
+
date: 2013-12-10 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: randexp
|
|
@@ -330,6 +330,7 @@ files:
|
|
|
330
330
|
- lib/pact/consumer_contract/service_provider.rb
|
|
331
331
|
- lib/pact/logging.rb
|
|
332
332
|
- lib/pact/matchers.rb
|
|
333
|
+
- lib/pact/matchers/diff_decorator.rb
|
|
333
334
|
- lib/pact/matchers/index_not_found.rb
|
|
334
335
|
- lib/pact/matchers/matchers.rb
|
|
335
336
|
- lib/pact/matchers/unexpected_index.rb
|
|
@@ -341,11 +342,14 @@ files:
|
|
|
341
342
|
- lib/pact/provider/pact_helper_locator.rb
|
|
342
343
|
- lib/pact/provider/pact_spec_runner.rb
|
|
343
344
|
- lib/pact/provider/pact_verification.rb
|
|
345
|
+
- lib/pact/provider/print_missing_provider_states.rb
|
|
344
346
|
- lib/pact/provider/provider_state.rb
|
|
347
|
+
- lib/pact/provider/provider_state_proxy.rb
|
|
345
348
|
- lib/pact/provider/request.rb
|
|
346
349
|
- lib/pact/provider/rspec.rb
|
|
347
350
|
- lib/pact/provider/test_methods.rb
|
|
348
351
|
- lib/pact/provider/verification_report.rb
|
|
352
|
+
- lib/pact/provider/world.rb
|
|
349
353
|
- lib/pact/reification.rb
|
|
350
354
|
- lib/pact/shared/dsl.rb
|
|
351
355
|
- lib/pact/shared/key_not_found.rb
|
|
@@ -356,11 +360,12 @@ files:
|
|
|
356
360
|
- lib/pact/tasks.rb
|
|
357
361
|
- lib/pact/tasks/task_helper.rb
|
|
358
362
|
- lib/pact/tasks/verification_task.rb
|
|
363
|
+
- lib/pact/templates/provider_state.erb
|
|
359
364
|
- lib/pact/term.rb
|
|
360
365
|
- lib/pact/version.rb
|
|
361
366
|
- lib/tasks/pact.rake
|
|
362
367
|
- pact.gemspec
|
|
363
|
-
- scratchpad.
|
|
368
|
+
- scratchpad.rb
|
|
364
369
|
- spec/features/consumption_spec.rb
|
|
365
370
|
- spec/features/production_spec.rb
|
|
366
371
|
- spec/features/provider_states/zebras.rb
|
|
@@ -384,14 +389,17 @@ files:
|
|
|
384
389
|
- spec/lib/pact/consumer_contract/consumer_contract_spec.rb
|
|
385
390
|
- spec/lib/pact/consumer_contract/interaction_spec.rb
|
|
386
391
|
- spec/lib/pact/consumer_contract/request_spec.rb
|
|
392
|
+
- spec/lib/pact/matchers/diff_decorator_spec.rb
|
|
387
393
|
- spec/lib/pact/matchers/matchers_spec.rb
|
|
388
394
|
- spec/lib/pact/provider/configuration_spec.rb
|
|
389
395
|
- spec/lib/pact/provider/pact_helper_locator_spec.rb
|
|
390
396
|
- spec/lib/pact/provider/pact_spec_runner_spec.rb
|
|
397
|
+
- spec/lib/pact/provider/print_missing_provider_states_spec.rb
|
|
398
|
+
- spec/lib/pact/provider/provider_state_proxy_spec.rb
|
|
391
399
|
- spec/lib/pact/provider/provider_state_spec.rb
|
|
392
400
|
- spec/lib/pact/provider/request_spec.rb
|
|
393
401
|
- spec/lib/pact/provider/rspec_spec.rb
|
|
394
|
-
- spec/lib/pact/provider/
|
|
402
|
+
- spec/lib/pact/provider/world_spec.rb
|
|
395
403
|
- spec/lib/pact/reification_spec.rb
|
|
396
404
|
- spec/lib/pact/shared/dsl_spec.rb
|
|
397
405
|
- spec/lib/pact/something_like_spec.rb
|
|
@@ -404,6 +412,7 @@ files:
|
|
|
404
412
|
- spec/support/consumer_contract_template.json
|
|
405
413
|
- spec/support/dsl_spec_support.rb
|
|
406
414
|
- spec/support/factories.rb
|
|
415
|
+
- spec/support/missing_provider_states_output.txt
|
|
407
416
|
- spec/support/pact_helper.rb
|
|
408
417
|
- spec/support/shared_examples_for_request.rb
|
|
409
418
|
- spec/support/test_app_fail.json
|
|
@@ -425,7 +434,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
425
434
|
version: '0'
|
|
426
435
|
segments:
|
|
427
436
|
- 0
|
|
428
|
-
hash:
|
|
437
|
+
hash: 4188255095502066512
|
|
429
438
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
430
439
|
none: false
|
|
431
440
|
requirements:
|
|
@@ -434,7 +443,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
434
443
|
version: '0'
|
|
435
444
|
segments:
|
|
436
445
|
- 0
|
|
437
|
-
hash:
|
|
446
|
+
hash: 4188255095502066512
|
|
438
447
|
requirements: []
|
|
439
448
|
rubyforge_project:
|
|
440
449
|
rubygems_version: 1.8.23
|
|
@@ -467,14 +476,17 @@ test_files:
|
|
|
467
476
|
- spec/lib/pact/consumer_contract/consumer_contract_spec.rb
|
|
468
477
|
- spec/lib/pact/consumer_contract/interaction_spec.rb
|
|
469
478
|
- spec/lib/pact/consumer_contract/request_spec.rb
|
|
479
|
+
- spec/lib/pact/matchers/diff_decorator_spec.rb
|
|
470
480
|
- spec/lib/pact/matchers/matchers_spec.rb
|
|
471
481
|
- spec/lib/pact/provider/configuration_spec.rb
|
|
472
482
|
- spec/lib/pact/provider/pact_helper_locator_spec.rb
|
|
473
483
|
- spec/lib/pact/provider/pact_spec_runner_spec.rb
|
|
484
|
+
- spec/lib/pact/provider/print_missing_provider_states_spec.rb
|
|
485
|
+
- spec/lib/pact/provider/provider_state_proxy_spec.rb
|
|
474
486
|
- spec/lib/pact/provider/provider_state_spec.rb
|
|
475
487
|
- spec/lib/pact/provider/request_spec.rb
|
|
476
488
|
- spec/lib/pact/provider/rspec_spec.rb
|
|
477
|
-
- spec/lib/pact/provider/
|
|
489
|
+
- spec/lib/pact/provider/world_spec.rb
|
|
478
490
|
- spec/lib/pact/reification_spec.rb
|
|
479
491
|
- spec/lib/pact/shared/dsl_spec.rb
|
|
480
492
|
- spec/lib/pact/something_like_spec.rb
|
|
@@ -487,6 +499,7 @@ test_files:
|
|
|
487
499
|
- spec/support/consumer_contract_template.json
|
|
488
500
|
- spec/support/dsl_spec_support.rb
|
|
489
501
|
- spec/support/factories.rb
|
|
502
|
+
- spec/support/missing_provider_states_output.txt
|
|
490
503
|
- spec/support/pact_helper.rb
|
|
491
504
|
- spec/support/shared_examples_for_request.rb
|
|
492
505
|
- spec/support/test_app_fail.json
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/provider/test_methods'
|
|
3
|
-
|
|
4
|
-
module Pact::Provider
|
|
5
|
-
describe TestMethods do
|
|
6
|
-
|
|
7
|
-
class TestHelper
|
|
8
|
-
include TestMethods
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
subject { TestHelper.new }
|
|
12
|
-
|
|
13
|
-
describe "get_provider_state" do
|
|
14
|
-
it "raises a descriptive error if the provider state is not found" do
|
|
15
|
-
ProviderState.stub(:get).and_return(nil)
|
|
16
|
-
expect{ subject.send(:get_provider_state, 'some state', 'consumer') }.to raise_error /Could not find.*some state.*consumer.*/
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|