pact 1.3.3 → 1.4.0.rc2
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 +16 -1
- data/Gemfile +5 -0
- data/Gemfile.lock +34 -13
- data/README.md +3 -2
- data/example/animal-service/lib/animal_service/api.rb +1 -0
- data/example/zoo-app/lib/zoo_app/animal_service_client.rb +0 -9
- data/example/zoo-app/lib/zoo_app/models/alligator.rb +2 -0
- data/lib/pact.rb +6 -5
- data/lib/pact/cli.rb +0 -26
- data/lib/pact/consumer/configuration.rb +0 -1
- data/lib/pact/consumer/configuration/configuration_extensions.rb +51 -0
- data/lib/pact/consumer/consumer_contract_builder.rb +1 -2
- data/lib/pact/consumer/interaction_builder.rb +2 -4
- data/lib/pact/doc/interaction_view_model.rb +9 -6
- data/lib/pact/doc/sort_interactions.rb +1 -1
- data/lib/pact/provider/rspec.rb +11 -9
- data/lib/pact/version.rb +1 -1
- data/pact.gemspec +5 -0
- data/spec/lib/pact/consumer/interaction_builder_spec.rb +4 -8
- data/spec/support/case-insensitive-response-header-matching.json +21 -0
- data/spec/support/case-insensitive-response-header-matching.rb +15 -0
- data/tasks/pact-test.rake +5 -0
- metadata +42 -122
- data/lib/pact/configuration.rb +0 -195
- data/lib/pact/consumer/app_manager.rb +0 -158
- data/lib/pact/consumer/interactions_filter.rb +0 -48
- data/lib/pact/consumer/mock_service.rb +0 -2
- data/lib/pact/consumer/mock_service/app.rb +0 -82
- data/lib/pact/consumer/mock_service/interaction_delete.rb +0 -33
- data/lib/pact/consumer/mock_service/interaction_list.rb +0 -76
- data/lib/pact/consumer/mock_service/interaction_mismatch.rb +0 -73
- data/lib/pact/consumer/mock_service/interaction_post.rb +0 -31
- data/lib/pact/consumer/mock_service/interaction_replay.rb +0 -139
- data/lib/pact/consumer/mock_service/log_get.rb +0 -28
- data/lib/pact/consumer/mock_service/missing_interactions_get.rb +0 -30
- data/lib/pact/consumer/mock_service/mock_service_administration_endpoint.rb +0 -31
- data/lib/pact/consumer/mock_service/pact_post.rb +0 -33
- data/lib/pact/consumer/mock_service/rack_request_helper.rb +0 -51
- data/lib/pact/consumer/mock_service/verification_get.rb +0 -68
- data/lib/pact/consumer/mock_service_client.rb +0 -65
- data/lib/pact/consumer/mock_service_interaction_expectation.rb +0 -37
- data/lib/pact/consumer/request.rb +0 -27
- data/lib/pact/consumer/server.rb +0 -90
- data/lib/pact/consumer_contract.rb +0 -1
- data/lib/pact/consumer_contract/consumer_contract.rb +0 -115
- data/lib/pact/consumer_contract/consumer_contract_writer.rb +0 -84
- data/lib/pact/consumer_contract/file_name.rb +0 -19
- data/lib/pact/consumer_contract/headers.rb +0 -51
- data/lib/pact/consumer_contract/interaction.rb +0 -67
- data/lib/pact/consumer_contract/pact_file.rb +0 -24
- data/lib/pact/consumer_contract/request.rb +0 -73
- data/lib/pact/consumer_contract/service_consumer.rb +0 -28
- data/lib/pact/consumer_contract/service_provider.rb +0 -28
- data/lib/pact/logging.rb +0 -14
- data/lib/pact/matchers.rb +0 -1
- data/lib/pact/matchers/actual_type.rb +0 -16
- data/lib/pact/matchers/base_difference.rb +0 -37
- data/lib/pact/matchers/differ.rb +0 -153
- data/lib/pact/matchers/difference.rb +0 -13
- data/lib/pact/matchers/difference_indicator.rb +0 -26
- data/lib/pact/matchers/embedded_diff_formatter.rb +0 -62
- data/lib/pact/matchers/expected_type.rb +0 -35
- data/lib/pact/matchers/index_not_found.rb +0 -15
- data/lib/pact/matchers/list_diff_formatter.rb +0 -101
- data/lib/pact/matchers/matchers.rb +0 -139
- data/lib/pact/matchers/no_diff_indicator.rb +0 -18
- data/lib/pact/matchers/regexp_difference.rb +0 -13
- data/lib/pact/matchers/type_difference.rb +0 -16
- data/lib/pact/matchers/unexpected_index.rb +0 -11
- data/lib/pact/matchers/unexpected_key.rb +0 -11
- data/lib/pact/matchers/unix_diff_formatter.rb +0 -114
- data/lib/pact/reification.rb +0 -28
- data/lib/pact/rspec.rb +0 -53
- data/lib/pact/shared/active_support_support.rb +0 -51
- data/lib/pact/shared/dsl.rb +0 -76
- data/lib/pact/shared/jruby_support.rb +0 -18
- data/lib/pact/shared/json_differ.rb +0 -15
- data/lib/pact/shared/key_not_found.rb +0 -15
- data/lib/pact/shared/null_expectation.rb +0 -31
- data/lib/pact/shared/request.rb +0 -80
- data/lib/pact/shared/text_differ.rb +0 -14
- data/lib/pact/something_like.rb +0 -49
- data/lib/pact/symbolize_keys.rb +0 -12
- data/lib/pact/term.rb +0 -85
- data/spec/lib/pact/consumer/request_spec.rb +0 -24
- data/spec/lib/pact/consumer_contract/active_support_support_spec.rb +0 -58
- data/spec/lib/pact/consumer_contract/consumer_contract_spec.rb +0 -180
- data/spec/lib/pact/consumer_contract/headers_spec.rb +0 -107
- data/spec/lib/pact/consumer_contract/interaction_spec.rb +0 -107
- data/spec/lib/pact/consumer_contract/request_spec.rb +0 -329
- data/spec/lib/pact/matchers/differ_spec.rb +0 -214
- data/spec/lib/pact/matchers/difference_spec.rb +0 -22
- data/spec/lib/pact/matchers/embedded_diff_formatter_spec.rb +0 -90
- data/spec/lib/pact/matchers/index_not_found_spec.rb +0 -21
- data/spec/lib/pact/matchers/list_diff_formatter_spec.rb +0 -114
- data/spec/lib/pact/matchers/matchers_spec.rb +0 -500
- data/spec/lib/pact/matchers/regexp_difference_spec.rb +0 -20
- data/spec/lib/pact/matchers/type_difference_spec.rb +0 -34
- data/spec/lib/pact/matchers/unexpected_index_spec.rb +0 -20
- data/spec/lib/pact/matchers/unexpected_key_spec.rb +0 -20
- data/spec/lib/pact/matchers/unix_diff_formatter_spec.rb +0 -216
- data/spec/lib/pact/reification_spec.rb +0 -67
- data/spec/lib/pact/shared/dsl_spec.rb +0 -86
- data/spec/lib/pact/shared/json_differ_spec.rb +0 -36
- data/spec/lib/pact/shared/key_not_found_spec.rb +0 -20
- data/spec/lib/pact/shared/request_spec.rb +0 -111
- data/spec/lib/pact/shared/text_differ_spec.rb +0 -54
- data/spec/lib/pact/something_like_spec.rb +0 -21
- data/spec/lib/pact/term_spec.rb +0 -89
- data/spec/support/dsl_spec_support.rb +0 -7
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/matchers/regexp_difference'
|
|
3
|
-
|
|
4
|
-
module Pact
|
|
5
|
-
module Matchers
|
|
6
|
-
describe RegexpDifference do
|
|
7
|
-
|
|
8
|
-
context "when a regexp is expected" do
|
|
9
|
-
|
|
10
|
-
subject { RegexpDifference.new(/ap/, 'pear').as_json }
|
|
11
|
-
|
|
12
|
-
it "indicates that the actual was indended 'to match'" do
|
|
13
|
-
expect(subject).to eq({:EXPECTED_TO_MATCH => "/ap/", :ACTUAL => "pear"})
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/matchers/type_difference'
|
|
3
|
-
|
|
4
|
-
module Pact
|
|
5
|
-
module Matchers
|
|
6
|
-
describe TypeDifference do
|
|
7
|
-
|
|
8
|
-
describe "#as_json" do
|
|
9
|
-
|
|
10
|
-
let(:expected) { ExpectedType.new("Fred") }
|
|
11
|
-
let(:actual) { ActualType.new(1) }
|
|
12
|
-
subject { TypeDifference.new expected, actual }
|
|
13
|
-
|
|
14
|
-
context "when the actual is a KeyNotFound" do
|
|
15
|
-
let(:actual) { KeyNotFound.new }
|
|
16
|
-
let(:expected_hash) { {:EXPECTED_TYPE => "String", :ACTUAL => actual.to_s } }
|
|
17
|
-
|
|
18
|
-
it "use the key ACTUAL" do
|
|
19
|
-
expect(subject.as_json).to eq(expected_hash)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context "when the actual is an ActualType" do
|
|
24
|
-
let(:expected_hash) { {:EXPECTED_TYPE => "String", :ACTUAL_TYPE => "Fixnum" } }
|
|
25
|
-
|
|
26
|
-
it "uses the key ACTUAL_TYPE" do
|
|
27
|
-
expect(subject.as_json).to eq(expected_hash)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/matchers/unexpected_index'
|
|
3
|
-
|
|
4
|
-
module Pact
|
|
5
|
-
describe UnexpectedIndex do
|
|
6
|
-
|
|
7
|
-
describe "#as_json" do
|
|
8
|
-
it "returns a string representation of the object" do
|
|
9
|
-
expect(subject.as_json).to eq subject.to_s
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
describe "#to_json" do
|
|
14
|
-
it "serialises the object to JSON" do
|
|
15
|
-
expect(subject.to_json).to eq "\"#{subject.to_s}\""
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/matchers/unexpected_key'
|
|
3
|
-
|
|
4
|
-
module Pact
|
|
5
|
-
describe UnexpectedKey do
|
|
6
|
-
|
|
7
|
-
describe "#as_json" do
|
|
8
|
-
it "returns a string representation of the object" do
|
|
9
|
-
expect(subject.as_json).to eq subject.to_s
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
describe "#to_json" do
|
|
14
|
-
it "serialises the object to JSON" do
|
|
15
|
-
expect(subject.to_json).to eq "\"#{subject.to_s}\""
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/matchers/unix_diff_formatter'
|
|
3
|
-
require 'pact/matchers/expected_type'
|
|
4
|
-
require 'pact/matchers/actual_type'
|
|
5
|
-
|
|
6
|
-
module Pact
|
|
7
|
-
module Matchers
|
|
8
|
-
describe UnixDiffFormatter do
|
|
9
|
-
|
|
10
|
-
describe ".call" do
|
|
11
|
-
|
|
12
|
-
let(:key_lines_count) { 4 }
|
|
13
|
-
let(:colour) { false }
|
|
14
|
-
subject { UnixDiffFormatter.call(diff, {colour: colour}) }
|
|
15
|
-
|
|
16
|
-
let(:line_count) { subject.split("\n").size }
|
|
17
|
-
|
|
18
|
-
context "when colour = false" do
|
|
19
|
-
let(:diff) { {thing: {alligator: Difference.new({name: 'Mary'}, "Joe" )}} }
|
|
20
|
-
it "does not include colour" do
|
|
21
|
-
expect(subject).to_not include("[0m")
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
context "when colour = true" do
|
|
26
|
-
let(:colour) { true }
|
|
27
|
-
let(:diff) { {thing: {alligator: Difference.new({name: 'Mary'}, "Joe" )}} }
|
|
28
|
-
it "uses colour" do
|
|
29
|
-
expect(subject).to include("[0m")
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context "with class based matching" do
|
|
34
|
-
let(:diff) { {thing: TypeDifference.new(ExpectedType.new("fred"), ActualType.new(1))}}
|
|
35
|
-
let(:output) { <<-EOF
|
|
36
|
-
{
|
|
37
|
-
- "thing": String
|
|
38
|
-
+ "thing": Fixnum
|
|
39
|
-
}
|
|
40
|
-
EOF
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
it "displays nicely" do
|
|
44
|
-
expect(remove_ansicolor subject).to include output
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
context "with an incorrect value in a hash" do
|
|
49
|
-
let(:diff) { {thing: {alligator: Difference.new({name: 'Mary'}, "Joe" )}} }
|
|
50
|
-
|
|
51
|
-
it "displays '+' next to the unexpected value, and '-' next to the missing one" do
|
|
52
|
-
expect(subject).to match /alligator/
|
|
53
|
-
expect(subject).to match /\-.*Mary/
|
|
54
|
-
expect(subject).to match /\+.*Joe/
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
58
|
-
expect(line_count).to eq 9 + key_lines_count
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
context "with an incorrect value in an array" do
|
|
64
|
-
let(:diff) { [NoDiffIndicator.new, Difference.new({name: 'Mary'}, "Joe"), NoDiffIndicator.new] }
|
|
65
|
-
|
|
66
|
-
it "displays '+' next to the incorrect values and '-' next to the missing ones" do
|
|
67
|
-
expect(subject).to match /no difference here!/
|
|
68
|
-
expect(subject).to match /\-.*{/
|
|
69
|
-
expect(subject).to match /\-.*}/
|
|
70
|
-
expect(subject).to match /\-.*Mary/
|
|
71
|
-
expect(subject).to match /\+.*Joe/
|
|
72
|
-
expect(subject).to match /no.*Mary.*Joe.*no/m
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "doesn't display the no difference indicator as a change" do
|
|
76
|
-
expect(subject).to match(/^\s+no difference here!,$/)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
80
|
-
expect(line_count).to eq 9 + key_lines_count
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context "with a regular expression that was not matched" do
|
|
86
|
-
let(:regexp) { %r{http://.*/thing/1234} }
|
|
87
|
-
let(:diff) { {thing: RegexpDifference.new(regexp, "pear")} }
|
|
88
|
-
|
|
89
|
-
it "displays the regular expression" do
|
|
90
|
-
expect(subject).to include(regexp.inspect)
|
|
91
|
-
expect(subject).to include(regexp.inspect)
|
|
92
|
-
expect(subject).to match /\-.*thing/
|
|
93
|
-
expect(subject).to match /\+.*pear/
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "does not put quotes around the regular expression" do
|
|
97
|
-
expect(subject).to match /\/$/
|
|
98
|
-
expect(subject).to match /: \//
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
102
|
-
expect(line_count).to eq 5 + key_lines_count
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
context "with a missing key" do
|
|
108
|
-
|
|
109
|
-
let(:diff) { {thing: {alligator: Difference.new({name: 'Mary'}, KeyNotFound.new )}} }
|
|
110
|
-
|
|
111
|
-
it "it displays '-' next to the missing key and its value" do
|
|
112
|
-
expect(subject).to match /\-.*{/
|
|
113
|
-
expect(subject).to match /\-.*}/
|
|
114
|
-
expect(subject).to match /\-.*alligator/
|
|
115
|
-
expect(subject).to match /\-.*name/
|
|
116
|
-
expect(subject).to match /\-.*Mary/
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "does not display the missing key in the actual output" do
|
|
120
|
-
expect(subject).to_not match /\+.*alligator/
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
124
|
-
expect(line_count).to eq 8 + key_lines_count
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
context "with an unexpected key" do
|
|
129
|
-
let(:diff) { {thing: {alligator: Difference.new(UnexpectedKey.new, {name: 'Mary'} )}} }
|
|
130
|
-
|
|
131
|
-
it "displays '+' next to the unexpected key and its value" do
|
|
132
|
-
expect(subject).to match /\+.*name/
|
|
133
|
-
expect(subject).to match /\+.*Mary/
|
|
134
|
-
expect(subject).to match /\+.*alligator/
|
|
135
|
-
expect(subject).to match /\+.*}/
|
|
136
|
-
expect(subject).to match /\+.*{/
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
it "does not display the unexpected key in the expected output" do
|
|
140
|
-
expect(subject).to_not match /\-.*alligator/
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
144
|
-
expect(line_count).to eq 8 + key_lines_count
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
context "with a missing index" do
|
|
150
|
-
let(:diff) { [NoDiffIndicator.new, Difference.new({name: 'Mary'}, IndexNotFound.new)] }
|
|
151
|
-
|
|
152
|
-
it "displays '-' next to the missing items" do
|
|
153
|
-
expect(subject).to match /\-.*Mary/
|
|
154
|
-
expect(subject).to match /\-.*{/
|
|
155
|
-
expect(subject).to match /\-.*}/
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it "does not display IndexNotFound" do
|
|
159
|
-
expect(subject).to_not match /#{IndexNotFound.new.to_s}/
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
163
|
-
expect(line_count).to eq 8 + key_lines_count
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
context "with an unexpected index" do
|
|
169
|
-
let(:diff) { [NoDiffIndicator.new, Difference.new(UnexpectedIndex.new, {name: 'Mary'})] }
|
|
170
|
-
|
|
171
|
-
it "displays '+' next to the unexpected item" do
|
|
172
|
-
expect(subject).to match /\+.*{/
|
|
173
|
-
expect(subject).to match /\+.*}/
|
|
174
|
-
expect(subject).to match /\+.*name/
|
|
175
|
-
expect(subject).to match /\+.*Mary/
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
xit "doesn't mark the 'no difference' as a change" do
|
|
179
|
-
expect(subject).to match /#{NoDiffIndicator.new.to_s},/
|
|
180
|
-
expect(subject).to_not match /\-.*#{NoDiffIndicator.new.to_s}/
|
|
181
|
-
expect(subject).to_not match /\+.*#{NoDiffIndicator.new.to_s}/
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
it "does not display the UnexpectedIndex" do
|
|
185
|
-
expect(subject).to_not match UnexpectedIndex.new.to_s
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
189
|
-
expect(line_count).to eq 8 + key_lines_count
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
context "with 2 unexpected indexes" do
|
|
195
|
-
let(:diff) { [NoDiffIndicator.new, Difference.new(UnexpectedIndex.new, {name: 'Mary'}), Difference.new(UnexpectedIndex.new, {name: 'Joe'})] }
|
|
196
|
-
|
|
197
|
-
it "displays '+' next to the unexpected item" do
|
|
198
|
-
expect(subject).to match /\+.*Mary/
|
|
199
|
-
expect(subject).to match /\+.*Joe/
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
it "does not display the UnexpectedIndex" do
|
|
203
|
-
expect(subject).to_not match UnexpectedIndex.new.to_s
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
it "generates the right number of lines, even with ActiveSupport loaded" do
|
|
207
|
-
expect(line_count).to eq 11 + key_lines_count
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
end
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module Pact
|
|
4
|
-
describe Reification do
|
|
5
|
-
|
|
6
|
-
let(:response_spec) do
|
|
7
|
-
{
|
|
8
|
-
woot: /x/,
|
|
9
|
-
britney: 'britney',
|
|
10
|
-
nested: { foo: /bar/, baz: 'qux' },
|
|
11
|
-
my_term: Term.new(generate: 'wiffle', matcher: /^wif/),
|
|
12
|
-
array: ['first', /second/]
|
|
13
|
-
}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe "from term" do
|
|
17
|
-
|
|
18
|
-
subject { Reification.from_term(response_spec) }
|
|
19
|
-
|
|
20
|
-
it "converts regexes into real data" do
|
|
21
|
-
expect(subject[:woot]).to eql 'x'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "converts terms into real data" do
|
|
25
|
-
expect(subject[:my_term]).to eql 'wiffle'
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "passes strings through" do
|
|
29
|
-
expect(subject[:britney]).to eql 'britney'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "handles nested hashes" do
|
|
33
|
-
expect(subject[:nested]).to eql({ foo: 'bar', baz: 'qux' })
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it "handles arrays" do
|
|
37
|
-
expect(subject[:array]).to eql ['first', 'second']
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
context "when reifying a Request" do
|
|
43
|
-
|
|
44
|
-
let(:request){ Pact::Request::Expected.from_hash(method: 'get', path: '/', body: Pact::Term.new(generate: "sunny", matcher: /sun/))}
|
|
45
|
-
|
|
46
|
-
subject { Reification.from_term(request) }
|
|
47
|
-
|
|
48
|
-
it "turns it into a hash before reifying it" do
|
|
49
|
-
expect(subject[:body]).to eq("sunny")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context "when SomethingLike" do
|
|
55
|
-
|
|
56
|
-
let(:request) { Pact::SomethingLike.new({a: 'String'})}
|
|
57
|
-
|
|
58
|
-
subject { Reification.from_term(request)}
|
|
59
|
-
|
|
60
|
-
it "returns the contents of the SomethingLike" do
|
|
61
|
-
expect(subject).to eq({a: 'String'})
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'pact/shared/dsl'
|
|
3
|
-
require 'support/dsl_spec_support'
|
|
4
|
-
|
|
5
|
-
module Pact
|
|
6
|
-
describe DSL do
|
|
7
|
-
|
|
8
|
-
class TestDSL
|
|
9
|
-
extend DSL
|
|
10
|
-
attr_accessor :thing, :blah, :global, :the_block, :another_block, :finalized
|
|
11
|
-
|
|
12
|
-
dsl do
|
|
13
|
-
def with_thing thing
|
|
14
|
-
self.thing = thing
|
|
15
|
-
end
|
|
16
|
-
def with_blah blah
|
|
17
|
-
self.blah = blah
|
|
18
|
-
end
|
|
19
|
-
def with_global global
|
|
20
|
-
self.global = global
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def with_block &the_block
|
|
24
|
-
self.the_block = the_block
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def with_another_block &the_block
|
|
28
|
-
self.another_block = the_block
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def finalize
|
|
34
|
-
@finalized = true
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
describe "build" do
|
|
39
|
-
before do
|
|
40
|
-
def my_local_method
|
|
41
|
-
'LA LA LA'
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
my_local_var = 123
|
|
45
|
-
|
|
46
|
-
local_app = "I'm a local app"
|
|
47
|
-
|
|
48
|
-
@test = TestDSL.build do
|
|
49
|
-
with_thing my_local_method
|
|
50
|
-
with_blah my_local_var
|
|
51
|
-
with_global global_method
|
|
52
|
-
with_block do
|
|
53
|
-
global_app
|
|
54
|
-
end
|
|
55
|
-
with_another_block do
|
|
56
|
-
local_app
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "supports using a local variable" do
|
|
62
|
-
expect(@test.blah).to eq 123
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "supports using a local method" do
|
|
66
|
-
expect(@test.thing).to eq 'LA LA LA'
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "supports using global methods from other files" do
|
|
70
|
-
expect(@test.global).to eq "I'm global"
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "supports using a local method to provide the app" do
|
|
74
|
-
expect(@test.another_block.call).to eq("I'm a local app")
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "should support using a global method to provide the app but it doesn't" do
|
|
78
|
-
expect(@test.the_block.call).to eq("I'm a global app")
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "calls finalize" do
|
|
82
|
-
expect(@test.finalized).to be true
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|