Skip to content

Commit 89482d5

Browse files
committedMar 21, 2018
refactor: change ExtractDiffMessages to return an array instead of a string
1 parent 8572097 commit 89482d5

File tree

3 files changed

+20
-15
lines changed

3 files changed

+20
-15
lines changed
 

‎lib/pact/matchers/extract_diff_messages.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# @api public. Used by lib/pact/provider/rspec/pact_broker_formatter.rb
12
module Pact
23
module Matchers
34
class ExtractDiffMessages
@@ -13,17 +14,21 @@ def self.call diff, options = {}
1314
end
1415

1516
def to_hash
16-
diff
17+
to_a
1718
end
1819

1920
def call
20-
to_s
21+
to_a
2122
end
2223

2324
def to_s
2425
diff_messages(diff).join("\n")
2526
end
2627

28+
def to_a
29+
diff_messages(diff)
30+
end
31+
2732
def diff_messages obj, path = [], messages = []
2833
case obj
2934
when Hash then handle_hash obj, path, messages
@@ -51,7 +56,7 @@ def handle_array array, path, messages
5156

5257
def handle_difference difference, path, messages
5358
if difference.message
54-
message = "* #{difference.message}"
59+
message = difference.message
5560
message = message.gsub("<path>", path_to_s(path))
5661
message = message.gsub("<parent_path>", parent_path_to_s(path))
5762
messages << message

‎lib/pact/matchers/unix_diff_formatter.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def initialize diff, options = {}
1717
@actual = options.fetch(:actual, {})
1818
@include_explanation = options.fetch(:include_explanation, true)
1919
@differ = Pact::Matchers::Differ.new(@colour)
20-
@messages = Pact::Matchers::ExtractDiffMessages.call(diff)
20+
@messages = Pact::Matchers::ExtractDiffMessages.call(diff).collect{ | message| "* #{message}" }.join("\n")
2121
end
2222

2323
def self.call diff, options = {}

‎spec/lib/pact/matchers/extract_diff_messages_spec.rb

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,62 +4,62 @@ module Pact
44
module Matchers
55
describe ExtractDiffMessages do
66

7-
subject { ExtractDiffMessages.call(diff) }
7+
subject { ExtractDiffMessages.call(diff).join("\n") }
88

99
context "<path> with a diff in a Hash" do
1010
let(:diff) { {a: Difference.new(nil, nil, "There was a difference at <path>") } }
1111

12-
it { is_expected.to eq "* There was a difference at $.a" }
12+
it { is_expected.to eq "There was a difference at $.a" }
1313
end
1414

1515
context "<parent_path> with a diff in a Hash" do
1616
let(:diff) { {a: Difference.new(nil, nil, "There was a difference at <parent_path>") } }
1717

18-
it { is_expected.to eq "* There was a difference at $" }
18+
it { is_expected.to eq "There was a difference at $" }
1919
end
2020

2121
context "<path> with a diff in a nested Hash" do
2222
let(:diff) { {a: {b: Difference.new(nil, nil, "There was a difference at <path>")}} }
2323

24-
it { is_expected.to eq "* There was a difference at $.a.b" }
24+
it { is_expected.to eq "There was a difference at $.a.b" }
2525
end
2626

2727
context "<parent_path> with a diff in a nested Hash" do
2828
let(:diff) { {a: {b: Difference.new(nil, nil, "There was a difference at <parent_path>")}} }
2929

30-
it { is_expected.to eq "* There was a difference at $.a" }
30+
it { is_expected.to eq "There was a difference at $.a" }
3131
end
3232

3333
context "<path> with a diff in an Array" do
3434
let(:diff) { [NoDiffAtIndex.new, Difference.new(nil, nil, "There was a difference at <path>")] }
3535

36-
it { is_expected.to eq "* There was a difference at $[1]" }
36+
it { is_expected.to eq "There was a difference at $[1]" }
3737
end
3838

3939
context "<parent_path> with a diff in an Array" do
4040
let(:diff) { [NoDiffAtIndex.new, Difference.new(nil, nil, "There was a difference at <parent_path>")] }
4141

42-
it { is_expected.to eq "* There was a difference at $" }
42+
it { is_expected.to eq "There was a difference at $" }
4343
end
4444

4545
context "<path> with a diff in a nested Array" do
4646
let(:diff) { [NoDiffAtIndex.new,[NoDiffAtIndex.new, Difference.new(nil, nil, "There was a difference at <path>")]] }
4747

48-
it { is_expected.to eq "* There was a difference at $[1][1]" }
48+
it { is_expected.to eq "There was a difference at $[1][1]" }
4949
end
5050

5151
context "<parent_path> with a diff in a nested Array" do
5252
let(:diff) { [NoDiffAtIndex.new,[NoDiffAtIndex.new, Difference.new(nil, nil, "There was a difference at <parent_path>")]] }
5353

54-
it { is_expected.to eq "* There was a difference at $[1]" }
54+
it { is_expected.to eq "There was a difference at $[1]" }
5555
end
5656

5757
context "when there is a space in the key" do
5858
let(:diff) do
5959
{"Foo Bar" => Difference.new(nil, nil, "There was a difference at <path>")}
6060
end
6161

62-
it { is_expected.to eq "* There was a difference at $.\"Foo Bar\"" }
62+
it { is_expected.to eq "There was a difference at $.\"Foo Bar\"" }
6363
end
6464

6565
context "with two differences" do
@@ -70,7 +70,7 @@ module Matchers
7070
}
7171
end
7272

73-
it { is_expected.to eq "* There was a difference at $.a\n* There was a difference at $.b" }
73+
it { is_expected.to eq "There was a difference at $.a\nThere was a difference at $.b" }
7474
end
7575

7676
end

0 commit comments

Comments
 (0)
Please sign in to comment.