pact-support 0.0.2 → 0.0.3
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 +5 -13
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +2 -2
- data/lib/pact/consumer_contract/query.rb +16 -0
- data/lib/pact/consumer_contract/query_hash.rb +55 -0
- data/lib/pact/reification.rb +16 -8
- data/lib/pact/shared/request.rb +2 -2
- data/lib/pact/support/version.rb +1 -1
- data/spec/lib/pact/consumer_contract/request_spec.rb +111 -1
- data/spec/lib/pact/reification_spec.rb +34 -0
- data/spec/lib/pact/shared/request_spec.rb +7 -0
- data/spec/support/shared_examples_for_request.rb +40 -2
- metadata +17 -15
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NGE1ZmFlOGY4M2NjZTUyMTMxODhhYzNkODU0YmU4ZjY2OGNiYWEwMw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c22fbc42f806850fdf59aae86c0ab60221e53b31
|
4
|
+
data.tar.gz: d861be0013364c930b5d092caa37fab70a3d9c5c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
Zjc3ODE5OWJhN2JiYzk5MDU0NzI2YWI0Mjg4YmUwMmQ0NjhhZWVmMTEwZDI2
|
11
|
-
NDNlOTYzYjI2NmQ4YWM4YTVlMTQ2NDlmMWFkOTE5OTAzOWVhYWY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YTBlNGY3YWQ2MzViNjgwNTdiODI2YzM0MzNiMGJiOTAxNTkyOTVmNzAzZTQw
|
14
|
-
OWY4YTA5YTAwYmZjNTZhZWQ4MmU3Y2NkZmNlNjJkZjcxYWUyNWY4NmUxNzY3
|
15
|
-
ODFkODcxNjkxYjZiZjhkNTFmZTJlOWM0NThjZDAyYTEzZGUyMWI=
|
6
|
+
metadata.gz: ce97bbeb237b4ed9dd74251120aab5a1ad6a452057c0fdf4f7236c811fe35a944bc3a89263983782bbc304104ea2e2f36b37a2b40c0455cf8c647ad26e0c249e
|
7
|
+
data.tar.gz: 92b643e2648be79ccf6e7221d7d3a30e3a735fe6cc04f0cede398a7ac6bc720a3d0564d8da9ade013003d616c87b39ae1bff815bb7d8dbb5346f8cb3764b4d0c
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@ Do this to generate your change history
|
|
2
2
|
|
3
3
|
git log --pretty=format:' * %h - %s (%an, %ad)'
|
4
4
|
|
5
|
+
### 0.0.3 (17 October 2014)
|
6
|
+
|
7
|
+
* bab0b34 - Added possibility to provide queries as Hash. Then order of parameters in the query is not longer relevant. (André Allavena, Tue Oct 14 00:24:38 2014 +1000)
|
8
|
+
|
5
9
|
### 0.0.2 (12 October 2014)
|
6
10
|
|
7
11
|
* e7080fe - Added a QueryString class in preparation for a QueryHash class (Beth, Sun Oct 12 14:32:15 2014 +1100)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pact-support (0.0.
|
4
|
+
pact-support (0.0.3)
|
5
5
|
awesome_print (~> 1.1)
|
6
6
|
find_a_port (~> 1.0.1)
|
7
7
|
json
|
@@ -46,7 +46,7 @@ GEM
|
|
46
46
|
rspec-core (~> 3.1.0)
|
47
47
|
rspec-expectations (~> 3.1.0)
|
48
48
|
rspec-mocks (~> 3.1.0)
|
49
|
-
rspec-core (3.1.
|
49
|
+
rspec-core (3.1.7)
|
50
50
|
rspec-support (~> 3.1.0)
|
51
51
|
rspec-expectations (3.1.2)
|
52
52
|
diff-lcs (>= 1.2.0, < 2.0)
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'pact/shared/active_support_support'
|
2
|
+
require 'pact/matchers'
|
3
|
+
require 'pact/symbolize_keys'
|
4
|
+
|
5
|
+
module Pact
|
6
|
+
class QueryHash
|
7
|
+
|
8
|
+
include ActiveSupportSupport
|
9
|
+
include Pact::Matchers
|
10
|
+
include SymbolizeKeys
|
11
|
+
|
12
|
+
def initialize query
|
13
|
+
@hash = query.nil? ? query : convert_to_hash_of_arrays(query)
|
14
|
+
end
|
15
|
+
|
16
|
+
def convert_to_hash_of_arrays query
|
17
|
+
symbolize_keys(query).inject({}) {|h,(k,v)| h[k] = v.is_a?(Array) ? v : [v] ; h }
|
18
|
+
end
|
19
|
+
|
20
|
+
def as_json opts = {}
|
21
|
+
@hash
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_json opts = {}
|
25
|
+
as_json(opts).to_json(opts)
|
26
|
+
end
|
27
|
+
|
28
|
+
def eql? other
|
29
|
+
self == other
|
30
|
+
end
|
31
|
+
|
32
|
+
def == other
|
33
|
+
QueryHash === other && other.query == query
|
34
|
+
end
|
35
|
+
|
36
|
+
# other will always be a QueryString, not a QueryHash, as it will have ben created
|
37
|
+
# from the actual query string.
|
38
|
+
def difference(other)
|
39
|
+
diff(query, symbolize_keys(CGI::parse(other.query)))
|
40
|
+
end
|
41
|
+
|
42
|
+
def query
|
43
|
+
@hash
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_s
|
47
|
+
@hash.inspect
|
48
|
+
end
|
49
|
+
|
50
|
+
def empty?
|
51
|
+
@hash && @hash.empty?
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
data/lib/pact/reification.rb
CHANGED
@@ -1,30 +1,38 @@
|
|
1
1
|
require 'randexp'
|
2
|
-
|
2
|
+
require 'rack/utils'
|
3
|
+
# reqiore 'active_support/core_ext/object/to_param'
|
3
4
|
module Pact
|
4
5
|
module Reification
|
6
|
+
include ActiveSupportSupport
|
5
7
|
|
6
8
|
def self.from_term(term)
|
7
9
|
case term
|
8
10
|
when Pact::Term, Regexp, Pact::SomethingLike
|
9
|
-
|
11
|
+
term.generate
|
10
12
|
when Hash
|
11
13
|
term.inject({}) do |mem, (key,term)|
|
12
14
|
mem[key] = from_term(term)
|
13
|
-
mem
|
14
|
-
end
|
15
|
-
when Array
|
16
|
-
term.inject([]) do |mem, term|
|
17
|
-
mem << from_term(term)
|
18
15
|
mem
|
19
16
|
end
|
17
|
+
when Array
|
18
|
+
term.map{ |t| from_term(t)}
|
20
19
|
when Pact::Request::Base
|
21
20
|
from_term(term.to_hash)
|
22
21
|
when Pact::QueryString
|
23
22
|
from_term(term.query)
|
23
|
+
when Pact::QueryHash
|
24
|
+
term.query.map { |k, v|
|
25
|
+
if v.nil?
|
26
|
+
k
|
27
|
+
elsif v.is_a?(Array) #For cases where there are multiple instance of the same parameter
|
28
|
+
v.map { |x| "#{k}=#{from_term(x)}"}.join('&')
|
29
|
+
else
|
30
|
+
"#{k}=#{from_term(v)}"
|
31
|
+
end
|
32
|
+
}.join('&')
|
24
33
|
else
|
25
34
|
term
|
26
35
|
end
|
27
36
|
end
|
28
|
-
|
29
37
|
end
|
30
38
|
end
|
data/lib/pact/shared/request.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'pact/matchers'
|
2
2
|
require 'pact/symbolize_keys'
|
3
3
|
require 'pact/consumer_contract/headers'
|
4
|
-
require 'pact/consumer_contract/
|
4
|
+
require 'pact/consumer_contract/query'
|
5
5
|
|
6
6
|
module Pact
|
7
7
|
|
@@ -19,7 +19,7 @@ module Pact
|
|
19
19
|
@path = path.chomp('/')
|
20
20
|
@headers = Hash === headers ? Headers.new(headers) : headers # Could be a NullExpectation - TODO make this more elegant
|
21
21
|
@body = body
|
22
|
-
@query = is_unspecified?(query) ? query : Pact::
|
22
|
+
@query = is_unspecified?(query) ? query : Pact::Query.create(query)
|
23
23
|
end
|
24
24
|
|
25
25
|
def to_json(options = {})
|
data/lib/pact/support/version.rb
CHANGED
@@ -299,7 +299,117 @@ module Pact
|
|
299
299
|
end
|
300
300
|
end
|
301
301
|
|
302
|
-
context
|
302
|
+
context 'when a query is specified' do
|
303
|
+
context 'when the queries are defined by hashes, order does not matter' do
|
304
|
+
let(:expected_query) { { params: 'hello', params2: 'world', params3: 'small' } }
|
305
|
+
let(:actual_query) { 'params3=small¶ms2=world¶ms=hello' }
|
306
|
+
|
307
|
+
it "does match" do
|
308
|
+
expect(subject.matches? actual_request).to be true
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
context 'when the queries are defined by hashes, order does not matter but content does' do
|
313
|
+
let(:expected_query) { { params: 'hello', params2: 'world', params3: 'small' } }
|
314
|
+
let(:actual_query) { 'params3=big¶ms2=world¶ms=hello' }
|
315
|
+
|
316
|
+
it "does not match" do
|
317
|
+
expect(subject.matches? actual_request).to be false
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
321
|
+
context 'when the queries are defined by hashes, with extra unmatched parameters' do
|
322
|
+
let(:expected_query) { { params: 'hello', params2: 'world', params3: 'small' } }
|
323
|
+
let(:actual_query) { 'params2=world¶ms=hello' }
|
324
|
+
|
325
|
+
it "does not match" do
|
326
|
+
expect(subject.matches? actual_request).to be false
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
context 'when the queries are defined by hashes holding Pact Terms, order does not matter but content does' do
|
331
|
+
let(:expected_query) { { params: 'hello', params2: Term.new(generate: 'world', matcher: /w\w+/), params3: 'small' } }
|
332
|
+
let(:actual_query) { 'params3=small¶ms=hello¶ms2=wroom'}
|
333
|
+
|
334
|
+
it "does match" do
|
335
|
+
expect(subject.matches? actual_request).to be true
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
context 'when the queries are defined by hashes holding Pact Terms and the regex does not match' do
|
340
|
+
let(:expected_query) { { params: 'hello', params2: Term.new(generate: 'world', matcher: /w\w+/), params3: 'small' } }
|
341
|
+
let(:actual_query) { 'params3=small¶ms=hello¶ms2=bonjour'}
|
342
|
+
|
343
|
+
it "does not match" do
|
344
|
+
expect(subject.matches? actual_request).to be false
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
context 'when the query is a hash containing arrays, to denote multiple parameters with the same name' do
|
349
|
+
let(:expected_query) {
|
350
|
+
{ simple_param: "hi",
|
351
|
+
double_param: ["hello", "world"],
|
352
|
+
simple2: "bye",
|
353
|
+
}
|
354
|
+
}
|
355
|
+
context 'when the multipe terms are in the correct order - order 1' do
|
356
|
+
let(:actual_query) {['simple_param=hi', 'double_param=hello', 'double_param=world', 'simple2=bye'].join('&')}
|
357
|
+
it "does match" do
|
358
|
+
expect(subject.matches? actual_request).to be true
|
359
|
+
end
|
360
|
+
end
|
361
|
+
context 'when the multipe terms are in the correct order - order 2' do
|
362
|
+
let(:actual_query) {['simple_param=hi', 'double_param=hello', 'simple2=bye', 'double_param=world'].join('&')}
|
363
|
+
it "does match" do
|
364
|
+
expect(subject.matches? actual_request).to be true
|
365
|
+
end
|
366
|
+
end
|
367
|
+
context 'when the multipe terms are in the correct order - order 3' do
|
368
|
+
let(:actual_query) {['simple2=bye', 'double_param=hello', 'double_param=world', 'simple_param=hi'].join('&')}
|
369
|
+
it "does match" do
|
370
|
+
expect(subject.matches? actual_request).to be true
|
371
|
+
end
|
372
|
+
end
|
373
|
+
context 'when the multiple terms are in incorrect order' do
|
374
|
+
let(:actual_query) {['simple2=bye', 'double_param=world', 'double_param=hello', 'simple_param=hi'].join('&')}
|
375
|
+
it "does not match" do
|
376
|
+
expect(subject.matches? actual_request).to be false
|
377
|
+
end
|
378
|
+
end
|
379
|
+
context 'when the first of the multiple terms is missing' do
|
380
|
+
let(:actual_query) {['simple_param=hi', 'double_param=world', 'simple2=bye', ].join('&')}
|
381
|
+
it "does not match" do
|
382
|
+
expect(subject.matches? actual_request).to be false
|
383
|
+
end
|
384
|
+
end
|
385
|
+
context 'when the last of the multiple terms is missing' do
|
386
|
+
let(:actual_query) {['simple_param=hi', 'double_param=hello', 'simple2=bye', ].join('&')}
|
387
|
+
it "does not match" do
|
388
|
+
expect(subject.matches? actual_request).to be false
|
389
|
+
end
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
context 'when the query does not contain multiple params of the same name, but the request does' do
|
394
|
+
let(:expected_query) { {param1: 'hi', param2: 'there'} }
|
395
|
+
context 'when the param is duplicated' do
|
396
|
+
let(:actual_query) { 'param1=hi¶m2=there¶m2=there'}
|
397
|
+
it "does not match" do
|
398
|
+
expect(subject.matches? actual_request).to be false
|
399
|
+
end
|
400
|
+
end
|
401
|
+
context 'when the duplicated param has different values' do
|
402
|
+
let(:actual_query) { 'param1=hi¶m2=there¶m2=overthere' }
|
403
|
+
it "does not match" do
|
404
|
+
expect(subject.matches? actual_request).to be false
|
405
|
+
end
|
406
|
+
end
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
|
411
|
+
|
412
|
+
context "when in the body a string is expected, but a number is found" do
|
303
413
|
let(:actual_body) { { thing: 123} }
|
304
414
|
let(:expected_body) { { thing: "123" } }
|
305
415
|
|
@@ -75,5 +75,39 @@ module Pact
|
|
75
75
|
|
76
76
|
end
|
77
77
|
|
78
|
+
context "when Hash Query" do
|
79
|
+
|
80
|
+
subject { Reification.from_term(query)}
|
81
|
+
|
82
|
+
let(:query) { QueryHash.new( {param: 'hello', extra: 'world'})}
|
83
|
+
|
84
|
+
it "returns the hash in the natural order" do
|
85
|
+
expect(subject).to eq("param=hello&extra=world")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context "when Hash Query with embeded terms" do
|
90
|
+
|
91
|
+
subject { Reification.from_term(query)}
|
92
|
+
|
93
|
+
let(:query) { QueryHash.new( {param: 'hello', extra: Pact::Term.new(generate: "wonderworld", matcher: /\w+world/)})}
|
94
|
+
|
95
|
+
it "returns the hash in the natural order, and fills in Terms appropriately" do
|
96
|
+
expect(subject).to eq("param=hello&extra=wonderworld")
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
context "when Hash Query with Arrays and multiple params with the same name" do
|
101
|
+
|
102
|
+
subject { Reification.from_term(query)}
|
103
|
+
|
104
|
+
let(:query) { QueryHash.new( {param: 'hello', double: [Pact::Term.new(generate: "wonder", matcher: /\w+/), 'world'], simple: 'bye'})}
|
105
|
+
|
106
|
+
it "returns the hash in the natural order, and fills in Terms appropriately" do
|
107
|
+
expect(subject).to eq("param=hello&double=wonder&double=world&simple=bye")
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
78
112
|
end
|
79
113
|
end
|
@@ -42,6 +42,13 @@ module Pact
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
context "with a query that is a hash" do
|
46
|
+
let(:query) { { params: 'hello', params2: Term.new(generate: 'world', matcher: /w\w+/), params3: 'small' } }
|
47
|
+
it "appends the query" do
|
48
|
+
expect(subject).to eq("/something?params=hello¶ms2=world¶ms3=small")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
45
52
|
context "with an empty query" do
|
46
53
|
let(:query) { "" }
|
47
54
|
it "does include a query" do
|
@@ -41,6 +41,39 @@ shared_examples "a request" do
|
|
41
41
|
expect(subject.full_path).to eq "/path?a"
|
42
42
|
end
|
43
43
|
end
|
44
|
+
context "with a path and a query that is a QueryString" do
|
45
|
+
subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {}, :query => Pact::Term.new(generate: 'a', matcher: /a/)}) }
|
46
|
+
it "returns the full path with reified path" do
|
47
|
+
expect(subject.full_path).to eq "/path?a"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
context "with a path and a query that is a QueryHash" do
|
51
|
+
subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {}, :query => {param: 'hello', extra: 'world'}}) }
|
52
|
+
it "returns the full path with reified path" do
|
53
|
+
expect(subject.full_path).to eq "/path?param=hello&extra=world"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
context "with a path and a query that is a QueryHash with an embeded Term" do
|
57
|
+
subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {},
|
58
|
+
:query => {param: 'hello', extra: Pact::Term.new(generate: "wonderworld", matcher: /\w+world/)}}) }
|
59
|
+
it "returns the full path with reified path" do
|
60
|
+
expect(subject.full_path).to eq "/path?param=hello&extra=wonderworld"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
context "with a path and a query that has multiple terms" do
|
64
|
+
subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {},
|
65
|
+
:query => {param: 'hello', simple: 'hi', double: [ 'hello', 'world'], last: 'gone'}}) }
|
66
|
+
it "returns the full path with reified path" do
|
67
|
+
expect(subject.full_path).to eq "/path?param=hello&simple=hi&double=hello&double=world&last=gone"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
context "with a path and a query that has multiple terms including terms" do
|
71
|
+
subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {},
|
72
|
+
:query => {param: 'hello', simple: 'hi', double: [ 'hello', Pact::Term.new(generate: "wonderworld", matcher: /\w+world/)], last: 'gone'}}) }
|
73
|
+
it "returns the full path with reified path" do
|
74
|
+
expect(subject.full_path).to eq "/path?param=hello&simple=hi&double=hello&double=wonderworld&last=gone"
|
75
|
+
end
|
76
|
+
end
|
44
77
|
end
|
45
78
|
|
46
79
|
describe "building from a hash" do
|
@@ -71,10 +104,15 @@ shared_examples "a request" do
|
|
71
104
|
expect(subject.body).to eq 'hello mallory'
|
72
105
|
end
|
73
106
|
|
74
|
-
it "extracts the query" do
|
107
|
+
it "extracts the string query" do
|
75
108
|
expect(subject.query).to eq Pact::QueryString.new('query')
|
76
109
|
end
|
77
110
|
|
111
|
+
it "extracts the hash query" do
|
112
|
+
raw_request['query']= {param: 'hello', extra: 'world'}
|
113
|
+
expect(subject.query).to eq Pact::QueryHash.new( {param: 'hello', extra: 'world'})
|
114
|
+
end
|
115
|
+
|
78
116
|
it "blows up if method is absent" do
|
79
117
|
raw_request.delete 'method'
|
80
118
|
expect { described_class.from_hash(raw_request) }.to raise_error
|
@@ -91,4 +129,4 @@ shared_examples "a request" do
|
|
91
129
|
end
|
92
130
|
|
93
131
|
end
|
94
|
-
end
|
132
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Fraser
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-10-
|
15
|
+
date: 2014-10-17 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: randexp
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
name: rspec
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '2.14'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
|
-
- -
|
42
|
+
- - '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '2.14'
|
45
45
|
- !ruby/object:Gem::Dependency
|
@@ -74,14 +74,14 @@ dependencies:
|
|
74
74
|
name: json
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
|
-
- -
|
77
|
+
- - '>='
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
80
|
type: :runtime
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - '>='
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
87
|
- !ruby/object:Gem::Dependency
|
@@ -116,14 +116,14 @@ dependencies:
|
|
116
116
|
name: thor
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - '>='
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - '>='
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
- !ruby/object:Gem::Dependency
|
@@ -158,14 +158,14 @@ dependencies:
|
|
158
158
|
name: pry
|
159
159
|
requirement: !ruby/object:Gem::Requirement
|
160
160
|
requirements:
|
161
|
-
- -
|
161
|
+
- - '>='
|
162
162
|
- !ruby/object:Gem::Version
|
163
163
|
version: '0'
|
164
164
|
type: :development
|
165
165
|
prerelease: false
|
166
166
|
version_requirements: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - '>='
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: '0'
|
171
171
|
- !ruby/object:Gem::Dependency
|
@@ -200,14 +200,14 @@ dependencies:
|
|
200
200
|
name: activesupport
|
201
201
|
requirement: !ruby/object:Gem::Requirement
|
202
202
|
requirements:
|
203
|
-
- -
|
203
|
+
- - '>='
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '0'
|
206
206
|
type: :development
|
207
207
|
prerelease: false
|
208
208
|
version_requirements: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
|
-
- -
|
210
|
+
- - '>='
|
211
211
|
- !ruby/object:Gem::Version
|
212
212
|
version: '0'
|
213
213
|
description:
|
@@ -238,6 +238,8 @@ files:
|
|
238
238
|
- lib/pact/consumer_contract/headers.rb
|
239
239
|
- lib/pact/consumer_contract/interaction.rb
|
240
240
|
- lib/pact/consumer_contract/pact_file.rb
|
241
|
+
- lib/pact/consumer_contract/query.rb
|
242
|
+
- lib/pact/consumer_contract/query_hash.rb
|
241
243
|
- lib/pact/consumer_contract/query_string.rb
|
242
244
|
- lib/pact/consumer_contract/request.rb
|
243
245
|
- lib/pact/consumer_contract/response.rb
|
@@ -338,17 +340,17 @@ require_paths:
|
|
338
340
|
- lib
|
339
341
|
required_ruby_version: !ruby/object:Gem::Requirement
|
340
342
|
requirements:
|
341
|
-
- -
|
343
|
+
- - '>='
|
342
344
|
- !ruby/object:Gem::Version
|
343
345
|
version: '0'
|
344
346
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
345
347
|
requirements:
|
346
|
-
- -
|
348
|
+
- - '>='
|
347
349
|
- !ruby/object:Gem::Version
|
348
350
|
version: '0'
|
349
351
|
requirements: []
|
350
352
|
rubyforge_project:
|
351
|
-
rubygems_version: 2.
|
353
|
+
rubygems_version: 2.0.14
|
352
354
|
signing_key:
|
353
355
|
specification_version: 4
|
354
356
|
summary: Shared code for Pact gems
|