pact 1.1.0.rc4 → 1.1.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/pact/matchers/matchers.rb +2 -3
- data/lib/pact/matchers/unix_diff_formatter.rb +2 -2
- data/lib/pact/provider/test_methods.rb +2 -2
- data/lib/pact/term.rb +24 -0
- data/lib/pact/version.rb +1 -1
- data/spec/lib/pact/matchers/embedded_diff_formatter_spec.rb +14 -1
- data/spec/lib/pact/matchers/matchers_spec.rb +11 -0
- data/spec/lib/pact/term_spec.rb +11 -0
- metadata +5 -2
data/Gemfile.lock
CHANGED
@@ -20,11 +20,11 @@ module Pact
|
|
20
20
|
DEFAULT_OPTIONS = {allow_unexpected_keys: true, type: false}.freeze
|
21
21
|
|
22
22
|
def diff expected, actual, opts = {}
|
23
|
-
calculate_diff(expected, actual, DEFAULT_OPTIONS.merge(opts))
|
23
|
+
calculate_diff(Pact::Term.unpack_regexps(expected), actual, DEFAULT_OPTIONS.merge(opts))
|
24
24
|
end
|
25
25
|
|
26
26
|
def type_diff expected, actual, opts = {}
|
27
|
-
calculate_diff expected, actual, DEFAULT_OPTIONS.merge(opts).merge(type: true)
|
27
|
+
calculate_diff Pact::Term.unpack_regexps(expected), actual, DEFAULT_OPTIONS.merge(opts).merge(type: true)
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
@@ -34,7 +34,6 @@ module Pact
|
|
34
34
|
case expected
|
35
35
|
when Hash then hash_diff(expected, actual, options)
|
36
36
|
when Array then array_diff(expected, actual, options)
|
37
|
-
when Pact::Term then calculate_diff(expected.matcher, actual, options)
|
38
37
|
when Regexp then regexp_diff(expected, actual, options)
|
39
38
|
when Pact::SomethingLike then calculate_diff(expected.contents, actual, options.merge(:type => true))
|
40
39
|
else object_diff(expected, actual, options)
|
@@ -71,9 +71,9 @@ module Pact
|
|
71
71
|
|
72
72
|
def copy_diff difference, target
|
73
73
|
if target == :actual
|
74
|
-
|
74
|
+
handle difference.actual, target
|
75
75
|
else
|
76
|
-
|
76
|
+
handle difference.expected, target
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -18,9 +18,9 @@ module Pact
|
|
18
18
|
request = Request::Replayable.new(interaction.request)
|
19
19
|
args = [request.path, request.body, request.headers]
|
20
20
|
|
21
|
-
logger.info "Sending #{request.method} request to path: \"#{request.path}\" with headers: #{request.headers}, see debug logs for body"
|
21
|
+
logger.info "Sending #{request.method.upcase} request to path: \"#{request.path}\" with headers: #{request.headers}, see debug logs for body"
|
22
22
|
logger.debug "body :#{request.body}"
|
23
|
-
response = self.send(request.method, *args)
|
23
|
+
response = self.send(request.method.downcase, *args)
|
24
24
|
logger.info "Received response with status: #{response.status}, headers: #{response.headers}, see debug logs for body"
|
25
25
|
logger.debug "body: #{response.body}"
|
26
26
|
end
|
data/lib/pact/term.rb
CHANGED
@@ -12,6 +12,16 @@ module Pact
|
|
12
12
|
new(generate: obj['data']['generate'], matcher: obj['data']['matcher'])
|
13
13
|
end
|
14
14
|
|
15
|
+
def self.unpack_regexps source
|
16
|
+
case source
|
17
|
+
when Pact::Term then source.matcher
|
18
|
+
when Array then unpack_regexps_from_array source
|
19
|
+
when Hash then unpack_regexps_from_hash source
|
20
|
+
else
|
21
|
+
source
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
def initialize(attributes = {})
|
16
26
|
@generate = attributes[:generate]
|
17
27
|
@matcher = attributes[:matcher]
|
@@ -57,5 +67,19 @@ module Pact
|
|
57
67
|
false
|
58
68
|
end
|
59
69
|
|
70
|
+
private
|
71
|
+
|
72
|
+
def self.unpack_regexps_from_array source
|
73
|
+
source.each_with_object([]) do | item, destination |
|
74
|
+
destination << unpack_regexps(item)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.unpack_regexps_from_hash source
|
79
|
+
source.keys.each_with_object({}) do | key, destination |
|
80
|
+
destination[key] = unpack_regexps source[key]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
60
84
|
end
|
61
85
|
end
|
data/lib/pact/version.rb
CHANGED
@@ -22,9 +22,12 @@ module Pact
|
|
22
22
|
|
23
23
|
describe ".call" do
|
24
24
|
|
25
|
-
let(:colour) {
|
25
|
+
let(:colour) { false }
|
26
26
|
|
27
27
|
context "when color_enabled is true" do
|
28
|
+
|
29
|
+
let(:colour) { true }
|
30
|
+
|
28
31
|
it "returns nicely formatted json" do
|
29
32
|
expect(subject.split("\n").size).to eq 6
|
30
33
|
end
|
@@ -49,6 +52,16 @@ module Pact
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
|
55
|
+
context "with a Pact::Term" do
|
56
|
+
let(:diff) { {thing: Difference.new(Pact::Term.new(generate: "Joe", matcher: /Jo/), "Mary")} }
|
57
|
+
|
58
|
+
xit "displays the matcher from the Pact::Term" do
|
59
|
+
expect(subject).to_not include("Pact::Term")
|
60
|
+
expect(subject).to include("/Jo/")
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
52
65
|
context "when no options are specified" do
|
53
66
|
subject { EmbeddedDiffFormatter.call(diff) }
|
54
67
|
|
@@ -144,6 +144,17 @@ module Pact::Matchers
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
+
context "when a term is expected inside a missing hash" do
|
148
|
+
let(:expected) { {a: {b: Pact::Term.new(:matcher => /p/, :generate => 'apple')}} }
|
149
|
+
context "and a non matching value is found" do
|
150
|
+
let(:actual) { {a: nil} }
|
151
|
+
let(:difference) { {a: Difference.new({b: /p/}, nil)} }
|
152
|
+
it "returns the diff with the regexp unpacked" do
|
153
|
+
expect(type_diff(expected, actual)).to eq difference
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
147
158
|
context "when unexpected keys are allowed" do
|
148
159
|
let(:expected) { { a: 'b' } }
|
149
160
|
let(:actual) { {a: 'c', d: 'e'} }
|
data/spec/lib/pact/term_spec.rb
CHANGED
@@ -74,5 +74,16 @@ module Pact
|
|
74
74
|
|
75
75
|
end
|
76
76
|
|
77
|
+
describe 'unpack_regexps' do
|
78
|
+
let(:term) { Term.new(generate: 'some', matcher: /s/) }
|
79
|
+
let(:body) { [{a: [{b: term}], c:term, d: 1, e: 'blah'}] }
|
80
|
+
let(:expected) { [{:a=>[{:b=>/s/}], :c=>/s/, :d=>1, :e=>"blah"}] }
|
81
|
+
|
82
|
+
it "returns a structure with the Pact::Terms replaced by their regexps" do
|
83
|
+
expect(Term.unpack_regexps(body)).to eq expected
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
77
88
|
end
|
78
89
|
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.1.0.
|
4
|
+
version: 1.1.0.rc5
|
5
5
|
prerelease: 6
|
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: 2014-05-
|
16
|
+
date: 2014-05-05 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: randexp
|
@@ -545,6 +545,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
545
545
|
- - ! '>='
|
546
546
|
- !ruby/object:Gem::Version
|
547
547
|
version: '0'
|
548
|
+
segments:
|
549
|
+
- 0
|
550
|
+
hash: 2010055491474427201
|
548
551
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
549
552
|
none: false
|
550
553
|
requirements:
|