dynport_tools 0.2.11 → 0.2.12

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.
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