validation_matcher 0.1.7 → 0.1.8

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.
@@ -6,27 +6,25 @@ module ValidationMatcher
6
6
  RSpec::Matchers.define :validate do |kind|
7
7
 
8
8
  chain(:of) { |field| @field = field }
9
- chain(:with) { |hash| @expected_options = hash }
10
-
11
- def options_message
12
- return '' unless diff.present?
13
- str = "\n expected options: " + @expected_options.inspect
14
- str << "\n actual options: " + validator_options.inspect
15
- str
16
- end
9
+ chain(:with) { |hash| @expected_options = hash }
17
10
 
18
11
  description do
19
12
  msg = "validate the #{ kind } of #{ @field.inspect }"
20
13
  msg << " with options: #{ @expected_options.inspect }" if @expected_options
14
+ @expected_options = nil # for some reason this appears to be cached between runs?
21
15
  msg
22
16
  end
23
17
 
24
18
  failure_message_for_should do
25
- "Expected #{ described_class } to validate the #{ kind } of #{ @field.inspect } #{ options_message }"
19
+ "Expected #{ described_class } to validate the #{ kind } of #{ @field.inspect } #{ diff }"
26
20
  end
27
21
 
28
22
  failure_message_for_should_not do
29
- "Expected #{ described_class } not to validate the #{ kind } of #{ @field.inspect } #{ options_message }"
23
+ "Expected #{ described_class } not to validate the #{ kind } of #{ @field.inspect } #{ diff }"
24
+ end
25
+
26
+ def expected_options
27
+ @expected_options || {}
30
28
  end
31
29
 
32
30
  def validator
@@ -37,14 +35,25 @@ module ValidationMatcher
37
35
  @validator_options ||= validator.options rescue {}
38
36
  end
39
37
 
38
+ def diff?
39
+ # if validator_options is empty and @expected_options is not, there is a problem
40
+ # if @expected_options is empty and validator_options is not, there is a problem
41
+ # if neither is empty diff them, if there's a diff, there is a problem
42
+
43
+ return true if expected_options.present? ^ validator_options.present?
44
+ return true if validator_options.diff(expected_options).present?
45
+ false
46
+ end
47
+
40
48
  def diff
41
- @diff ||= @expected_options ? validator_options.diff(@expected_options) : {}
49
+ return '' unless diff?
50
+ str = "\n expected options: #{ expected_options.inspect }"
51
+ str << "\n actual options: #{ validator_options.inspect }"
52
+ str
42
53
  end
43
54
 
44
55
  match do |actual|
45
- result = validator.present? and diff.blank?
46
- @expected_options = nil # for some reason this appears to be cached between runs?
47
- result
56
+ validator.present? and not diff?
48
57
  end
49
58
 
50
59
  end
@@ -1,3 +1,3 @@
1
1
  module ValidationMatcher
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  libs = %w[
2
2
  active_model
3
3
  active_support/core_ext
4
+ pry
4
5
  rspec
5
6
  validation_matcher
6
7
  ]
data/spec/thing_spec.rb CHANGED
@@ -2,8 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe Thing do
4
4
 
5
- it { should_not validate(:presence).of(:field_a) }
6
- it { should validate(:presence).of(:field_b) }
7
- it { should validate(:numericality).of(:field_c).with(only_integer: true, allow_nil: false) }
5
+ it { should_not validate(:presence).of :field_a }
6
+ it { should validate(:presence).of :field_b }
7
+
8
+ it { should_not validate(:numericality).of :field_c }
9
+ it { should_not validate(:numericality).of(:field_c).with only_integer: true }
10
+ it { should validate(:numericality).of(:field_c).with only_integer: true, allow_nil: false }
8
11
 
9
12
  end
@@ -23,4 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency 'activesupport', '~> 3'
24
24
 
25
25
  s.add_development_dependency 'rake'
26
+ s.add_development_dependency 'pry'
27
+ s.add_development_dependency 'pry-doc'
28
+ s.add_development_dependency 'pry-debugger'
26
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validation_matcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-04 00:00:00.000000000 Z
12
+ date: 2013-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -75,6 +75,54 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: pry
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: pry-doc
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: pry-debugger
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
78
126
  description: Use reflection to spec ActiveModel validations
79
127
  email:
80
128
  - me@bm5k.com
@@ -105,15 +153,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
153
  - - ! '>='
106
154
  - !ruby/object:Gem::Version
107
155
  version: '0'
156
+ segments:
157
+ - 0
158
+ hash: -1150667163459900178
108
159
  required_rubygems_version: !ruby/object:Gem::Requirement
109
160
  none: false
110
161
  requirements:
111
162
  - - ! '>='
112
163
  - !ruby/object:Gem::Version
113
164
  version: '0'
165
+ segments:
166
+ - 0
167
+ hash: -1150667163459900178
114
168
  requirements: []
115
169
  rubyforge_project: validation_matcher
116
- rubygems_version: 1.8.23
170
+ rubygems_version: 1.8.25
117
171
  signing_key:
118
172
  specification_version: 3
119
173
  summary: RSpec matcher for ActiveModel validations