validation_matcher 2.0.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/validation_matcher/hash_diff.rb +17 -0
- data/lib/validation_matcher/version.rb +1 -1
- data/lib/validation_matcher.rb +11 -26
- data/validation_matcher.gemspec +2 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b16465f924eb98a7218d2f6cc181c61bcb420a72
|
4
|
+
data.tar.gz: 50aae6f4842ebe52344b916ef1200d159b07509f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f4f0af1a4e941053b8698abdddc5e756d5d070af667ef23cb8ea752d912e2751ceead3c15d7a2ec5f4689935d5a22f71871d09c7b69dc8d1f1b4d6efea89c96
|
7
|
+
data.tar.gz: 9b22e0532ac4bd4dce5bd5ba10f496a94733eb3fc712aa92e236a535dc22e3ffd666cc9c20b5728c3ae2d855e463401ad90e81a3cca015e221cd3a70273dfec5
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module HashDiff
|
2
|
+
|
3
|
+
refine Hash do
|
4
|
+
# Stolen from Rails 4.0.5 since this has been removed!
|
5
|
+
#
|
6
|
+
# Returns a hash that represents the diff_witherence between two hashes.
|
7
|
+
#
|
8
|
+
# {1 => 2}.diff_with(1 => 2) # => {}
|
9
|
+
# {1 => 2}.diff_with(1 => 3) # => {1 => 2}
|
10
|
+
# {}.diff_with(1 => 2) # => {1 => 2}
|
11
|
+
# {1 => 2, 3 => 4}.diff_with(1 => 2) # => {3 => 4}
|
12
|
+
def diff_with other
|
13
|
+
dup.delete_if { |k, v| other[k] == v }.merge!(other.dup.delete_if { |k, v| has_key?(k) })
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/validation_matcher.rb
CHANGED
@@ -1,26 +1,11 @@
|
|
1
1
|
require 'validation_matcher/version'
|
2
|
+
require 'validation_matcher/hash_diff'
|
2
3
|
require 'rspec/expectations'
|
3
4
|
|
4
|
-
unless Hash.instance_methods.include?(:diff)
|
5
|
-
class Hash
|
6
|
-
|
7
|
-
# Stolen from Rails 4.0.5 since this has been removed!
|
8
|
-
#
|
9
|
-
# Returns a hash that represents the difference between two hashes.
|
10
|
-
#
|
11
|
-
# {1 => 2}.diff(1 => 2) # => {}
|
12
|
-
# {1 => 2}.diff(1 => 3) # => {1 => 2}
|
13
|
-
# {}.diff(1 => 2) # => {1 => 2}
|
14
|
-
# {1 => 2, 3 => 4}.diff(1 => 2) # => {3 => 4}
|
15
|
-
def diff other
|
16
|
-
dup.delete_if { |k, v| other[k] == v }.merge!(other.dup.delete_if { |k, v| has_key?(k) })
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
5
|
module ValidationMatcher
|
23
6
|
|
7
|
+
using HashDiff
|
8
|
+
|
24
9
|
RSpec::Matchers.define :validate do |kind|
|
25
10
|
|
26
11
|
chain(:of) { |field| @field = field }
|
@@ -34,11 +19,11 @@ module ValidationMatcher
|
|
34
19
|
end
|
35
20
|
|
36
21
|
failure_message do
|
37
|
-
"Expected #{ described_class } to validate the #{ kind } of #{ @field.inspect } #{
|
22
|
+
"Expected #{ described_class } to validate the #{ kind } of #{ @field.inspect } #{ diff_with }"
|
38
23
|
end
|
39
24
|
|
40
25
|
failure_message_when_negated do
|
41
|
-
"Expected #{ described_class } not to validate the #{ kind } of #{ @field.inspect } #{
|
26
|
+
"Expected #{ described_class } not to validate the #{ kind } of #{ @field.inspect } #{ diff_with }"
|
42
27
|
end
|
43
28
|
|
44
29
|
def expected_options
|
@@ -53,25 +38,25 @@ module ValidationMatcher
|
|
53
38
|
@validator_options ||= validator.options rescue {}
|
54
39
|
end
|
55
40
|
|
56
|
-
def
|
41
|
+
def diff_with?
|
57
42
|
# if validator_options is empty and @expected_options is not, there is a problem
|
58
43
|
# if @expected_options is empty and validator_options is not, there is a problem
|
59
|
-
# if neither is empty
|
44
|
+
# if neither is empty diff_with them, if there's a diff_with, there is a problem
|
60
45
|
|
61
46
|
return true if expected_options.present? ^ validator_options.present?
|
62
|
-
return true if validator_options.
|
47
|
+
return true if validator_options.diff_with(expected_options).present?
|
63
48
|
false
|
64
49
|
end
|
65
50
|
|
66
|
-
def
|
67
|
-
return '' unless
|
51
|
+
def diff_with
|
52
|
+
return '' unless diff_with?
|
68
53
|
str = "\n expected options: #{ expected_options.inspect }"
|
69
54
|
str << "\n actual options: #{ validator_options.inspect }"
|
70
55
|
str
|
71
56
|
end
|
72
57
|
|
73
58
|
match do |actual|
|
74
|
-
validator.present? and not
|
59
|
+
validator.present? and not diff_with?
|
75
60
|
end
|
76
61
|
|
77
62
|
end
|
data/validation_matcher.gemspec
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
|
+
s.required_ruby_version = '>= 2.0'
|
23
|
+
|
22
24
|
s.add_dependency 'rspec-expectations', '~> 3.1'
|
23
25
|
|
24
26
|
s.add_development_dependency 'activemodel', '>= 3'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validation_matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BM5k
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-expectations
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- README.md
|
110
110
|
- Rakefile
|
111
111
|
- lib/validation_matcher.rb
|
112
|
+
- lib/validation_matcher/hash_diff.rb
|
112
113
|
- lib/validation_matcher/version.rb
|
113
114
|
- spec/spec_helper.rb
|
114
115
|
- spec/thing_spec.rb
|
@@ -125,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
126
|
requirements:
|
126
127
|
- - ">="
|
127
128
|
- !ruby/object:Gem::Version
|
128
|
-
version: '0'
|
129
|
+
version: '2.0'
|
129
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
131
|
requirements:
|
131
132
|
- - ">="
|
@@ -133,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
134
|
version: '0'
|
134
135
|
requirements: []
|
135
136
|
rubyforge_project: validation_matcher
|
136
|
-
rubygems_version: 2.4.
|
137
|
+
rubygems_version: 2.4.8
|
137
138
|
signing_key:
|
138
139
|
specification_version: 4
|
139
140
|
summary: RSpec matcher for ActiveModel validations
|