dynport_tools 0.2.11 → 0.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/dynport_tools.gemspec +1 -1
- data/lib/dynport_tools/differ.rb +23 -9
- data/spec/dynport_tools/differ_spec.rb +14 -13
- data/spec/dynport_tools/have_attributes_spec.rb +1 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.12
|
data/dynport_tools.gemspec
CHANGED
data/lib/dynport_tools/differ.rb
CHANGED
@@ -17,21 +17,31 @@ module DynportTools
|
|
17
17
|
[a, b] if a != b
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
21
|
-
def
|
20
|
+
|
21
|
+
def each_diff(the_diff, prefix = nil, &block)
|
22
22
|
if the_diff.is_a?(Array)
|
23
|
-
|
23
|
+
yield(prefix, the_diff.first, the_diff.at(1))
|
24
24
|
elsif the_diff.is_a?(Hash)
|
25
|
-
the_diff.
|
25
|
+
the_diff.each do |key, diff|
|
26
26
|
if diff.is_a?(Array)
|
27
|
-
|
27
|
+
yield([prefix, key].flatten.compact, diff.first, diff.at(1))
|
28
28
|
else
|
29
|
-
|
29
|
+
each_diff(diff, [prefix, key], &block)
|
30
30
|
end
|
31
|
-
end
|
32
|
-
|
33
|
-
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def diff_to_message_lines(the_diff)
|
36
|
+
diffs = []
|
37
|
+
each_diff(the_diff) do |keys, old_value, new_value|
|
38
|
+
if keys.nil?
|
39
|
+
diffs << "expected #{expected_value(old_value)} to be #{expected_value(new_value)}"
|
40
|
+
else
|
41
|
+
diffs << "expected #{keys_to_s(keys)} to #{use_return ? "return" : "be"} #{expected_value(old_value)} but #{use_return ? "did" : "was"} #{expected_value(new_value)}"
|
42
|
+
end
|
34
43
|
end
|
44
|
+
diffs
|
35
45
|
end
|
36
46
|
|
37
47
|
def diff_strings(a, b)
|
@@ -95,6 +105,10 @@ module DynportTools
|
|
95
105
|
def both?(a, b, clazz)
|
96
106
|
a.is_a?(clazz) && b.is_a?(clazz)
|
97
107
|
end
|
108
|
+
|
109
|
+
def keys_to_s(keys)
|
110
|
+
keys.compact.map { |k| k.is_a?(Hash) ? k.inspect : k }.join("/")
|
111
|
+
end
|
98
112
|
|
99
113
|
def merge_prefixes(prefix, key)
|
100
114
|
key_s = key.is_a?(Hash) ? key.inspect : key
|
@@ -155,23 +155,24 @@ describe DynportTools::Differ do
|
|
155
155
|
differ.diff_to_message_lines({ :a => [1, 2]}).should == ["expected a to return <1> but did <2>"]
|
156
156
|
end
|
157
157
|
|
158
|
-
it "adds a prefix when diff is array" do
|
159
|
-
differ.diff_to_message_lines({ :a => [1, 2]}, "b").should == ["expected b[a] to be <1> but was <2>"]
|
160
|
-
end
|
161
|
-
|
162
158
|
it "returns the correctly nested diff" do
|
163
|
-
differ.diff_to_message_lines({ :a => { :b => [3, 4] } }).should == ["expected a
|
159
|
+
differ.diff_to_message_lines({ :a => { :b => [3, 4] } }).should == ["expected a/b to be <3> but was <4>"]
|
164
160
|
end
|
165
161
|
|
166
|
-
it "returns the correctly
|
167
|
-
differ.diff_to_message_lines({ :a => { :b => [3, 4] } }
|
162
|
+
it "returns the correctly nested even complexer diff" do
|
163
|
+
differ.diff_to_message_lines({ :a => { :b => { { :c => 1 } => [3, 4] } } }).should == ["expected a/b/{:c=>1} to be <3> but was <4>"]
|
168
164
|
end
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
]
|
165
|
+
end
|
166
|
+
|
167
|
+
describe "#each_diff" do
|
168
|
+
it "calls dummy with correct attributes" do
|
169
|
+
d = double("to be called")
|
170
|
+
d.should_receive(:called).with([:a, :b], 3, 4)
|
171
|
+
d.should_receive(:called).with([:a, :c], nil, 1)
|
172
|
+
|
173
|
+
differ.each_diff({ :a => { :b => [3, 4], :c => [nil, 1] } }) do |path, old, new|
|
174
|
+
d.called(path, old, new)
|
175
|
+
end
|
175
176
|
end
|
176
177
|
end
|
177
178
|
end
|
@@ -42,7 +42,7 @@ describe "DynportTools::HaveAttributesMatcher" do
|
|
42
42
|
it "returns the correct error message for complex hashes" do
|
43
43
|
matcher = DynportTools::HaveAttributesMatcher::HaveAttributes.new(:a => { :b => [1] })
|
44
44
|
matcher.matches?(:a => { :b => [2] }).should be_false
|
45
|
-
matcher.failure_message.should == "expected a
|
45
|
+
matcher.failure_message.should == "expected a/b/0 to be <1> but was <2>"
|
46
46
|
end
|
47
47
|
|
48
48
|
it "returns false when target hash as viewer values than expected" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynport_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 12
|
10
|
+
version: 0.2.12
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|