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 CHANGED
@@ -1 +1 @@
1
- 0.2.11
1
+ 0.2.12
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dynport_tools}
8
- s.version = "0.2.11"
8
+ s.version = "0.2.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Schwab"]
@@ -17,21 +17,31 @@ module DynportTools
17
17
  [a, b] if a != b
18
18
  end
19
19
  end
20
-
21
- def diff_to_message_lines(the_diff, prefix = nil)
20
+
21
+ def each_diff(the_diff, prefix = nil, &block)
22
22
  if the_diff.is_a?(Array)
23
- ["expected #{expected_value(the_diff.first)} to be #{expected_value(the_diff.at(1))}"]
23
+ yield(prefix, the_diff.first, the_diff.at(1))
24
24
  elsif the_diff.is_a?(Hash)
25
- the_diff.map do |key, diff|
25
+ the_diff.each do |key, diff|
26
26
  if diff.is_a?(Array)
27
- "expected #{merge_prefixes(prefix, key)} to #{use_return ? "return" : "be"} #{expected_value(diff.first)} but #{use_return ? "did" : "was"} #{expected_value(diff.at(1))}"
27
+ yield([prefix, key].flatten.compact, diff.first, diff.at(1))
28
28
  else
29
- diff_to_message_lines(diff, merge_prefixes(prefix, key))
29
+ each_diff(diff, [prefix, key], &block)
30
30
  end
31
- end.flatten
32
- else
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[b] to be <3> but was <4>"]
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 neep nested diff" do
167
- differ.diff_to_message_lines({ :a => { :b => [3, 4] } }, "c").should == ["expected c[a][b] to be <3> but was <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
- it "returns multiple messages" do
171
- differ.diff_to_message_lines({ :a => { :b => [3, 4], :c => [nil, 1] } }, "c").sort.should == [
172
- "expected c[a][b] to be <3> but was <4>",
173
- "expected c[a][c] to be <nil> but was <1>",
174
- ].sort
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[b][0] to be <1> but was <2>"
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: 1
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 11
10
- version: 0.2.11
9
+ - 12
10
+ version: 0.2.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tobias Schwab