shoulda-matchers 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shoulda-matchers (2.1.0)
4
+ shoulda-matchers (2.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
data/NEWS.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # HEAD
2
2
 
3
+ # v 2.2.0
4
+
5
+ * Fix `have_and_belong_to_many` matcher issue for Rails 4.
6
+
7
+ * Fix `validate_uniqueness_of.scoped_to` issue when the scoped field is already
8
+ taken (#207).
9
+
10
+ * Add comparison submatchers to `validate_numericality_of` to correspond to the
11
+ comparison options you can give to `validates_numericality_of` (#244).
12
+
3
13
  # v 2.1.0
4
14
 
5
15
  * Add missing `failure_message_for_should_not` implementations to
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- shoulda-matchers (2.1.0)
4
+ shoulda-matchers (2.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- shoulda-matchers (2.1.0)
4
+ shoulda-matchers (2.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- shoulda-matchers (2.1.0)
4
+ shoulda-matchers (2.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -6,6 +6,7 @@ require 'shoulda/matchers/active_model/allow_value_matcher'
6
6
  require 'shoulda/matchers/active_model/disallow_value_matcher'
7
7
  require 'shoulda/matchers/active_model/only_integer_matcher'
8
8
  require 'shoulda/matchers/active_model/odd_even_number_matcher'
9
+ require 'shoulda/matchers/active_model/comparison_matcher'
9
10
  require 'shoulda/matchers/active_model/ensure_length_of_matcher'
10
11
  require 'shoulda/matchers/active_model/ensure_inclusion_of_matcher'
11
12
  require 'shoulda/matchers/active_model/ensure_exclusion_of_matcher'
@@ -0,0 +1,52 @@
1
+ module Shoulda # :nodoc:
2
+ module Matchers
3
+ module ActiveModel # :nodoc:
4
+ # Examples:
5
+ # it { should validate_numericality_of(:attr).
6
+ # is_greater_than(6).
7
+ # less_than(20)...(and so on) }
8
+ class ComparisonMatcher < ValidationMatcher
9
+ def initialize(value, operator)
10
+ @value = value
11
+ @operator = operator
12
+ end
13
+
14
+ def for(attribute)
15
+ @attribute = attribute
16
+ self
17
+ end
18
+
19
+ def matches?(subject)
20
+ @subject = subject
21
+ disallows_value_of(value_to_compare)
22
+ end
23
+
24
+ def allowed_types
25
+ 'integer'
26
+ end
27
+
28
+ private
29
+
30
+ def value_to_compare
31
+ case @operator
32
+ when :> then [@value, @value - 1].sample
33
+ when :>= then @value - 1
34
+ when :== then @value
35
+ when :< then [@value, @value + 1].sample
36
+ when :<= then @value + 1
37
+ end
38
+ end
39
+
40
+ def expectation
41
+ case @operator
42
+ when :> then "greater than"
43
+ when :>= then "greater than or equal to"
44
+ when :== then "equal to"
45
+ when :< then "less than"
46
+ when :<= then "less than or equal to"
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -32,8 +32,32 @@ module Shoulda # :nodoc:
32
32
  end
33
33
 
34
34
  def only_integer
35
- only_integer_matcher = OnlyIntegerMatcher.new(@attribute)
36
- add_submatcher(only_integer_matcher)
35
+ add_submatcher(OnlyIntegerMatcher.new(@attribute))
36
+ self
37
+ end
38
+
39
+ def is_greater_than(value)
40
+ add_submatcher(ComparisonMatcher.new(value, :>).for(@attribute))
41
+ self
42
+ end
43
+
44
+ def is_greater_than_or_equal_to(value)
45
+ add_submatcher(ComparisonMatcher.new(value, :>=).for(@attribute))
46
+ self
47
+ end
48
+
49
+ def is_equal_to(value)
50
+ add_submatcher(ComparisonMatcher.new(value, :==).for(@attribute))
51
+ self
52
+ end
53
+
54
+ def is_less_than(value)
55
+ add_submatcher(ComparisonMatcher.new(value, :<).for(@attribute))
56
+ self
57
+ end
58
+
59
+ def is_less_than_or_equal_to(value)
60
+ add_submatcher(ComparisonMatcher.new(value, :<=).for(@attribute))
37
61
  self
38
62
  end
39
63
 
@@ -98,7 +122,7 @@ module Shoulda # :nodoc:
98
122
  end
99
123
 
100
124
  def failing_submatchers
101
- @failing_submatchers ||= @submatchers.select { |matcher| !matcher.matches?(@subject) }
125
+ @failing_submatchers ||= @submatchers.select { |matcher| !matcher.matches?(@subject.dup) }
102
126
  end
103
127
 
104
128
  def allowed_types
@@ -156,15 +156,13 @@ module Shoulda # :nodoc:
156
156
  @existing_record = create_record_in_database
157
157
  end
158
158
 
159
- # TODO: There is a chance that we could change the scoped field
160
- # to a value that's already taken. An alternative implementation
161
- # could actually find all values for scope and create a unique
162
159
  def validate_after_scope_change?
163
160
  if @options[:scopes].blank?
164
161
  true
165
162
  else
163
+ all_records = @subject.class.all
166
164
  @options[:scopes].all? do |scope|
167
- previous_value = existing_record.send(scope)
165
+ previous_value = all_records.map(&scope).max
168
166
 
169
167
  # Assume the scope is a foreign key if the field is nil
170
168
  previous_value ||= correct_type_for_column(@subject.class.columns_hash[scope.to_s])
@@ -34,10 +34,10 @@ module Shoulda # :nodoc:
34
34
  allow = allow_value_matcher(value, message)
35
35
 
36
36
  if allow.matches?(@subject)
37
- @failure_message_for_should_not = allow.failure_message_for_should
37
+ @failure_message_for_should_not = allow.failure_message_for_should_not
38
38
  true
39
39
  else
40
- @failure_message_for_should = allow.failure_message_for_should_not
40
+ @failure_message_for_should = allow.failure_message_for_should
41
41
  false
42
42
  end
43
43
  end
@@ -46,10 +46,10 @@ module Shoulda # :nodoc:
46
46
  disallow = disallow_value_matcher(value, message)
47
47
 
48
48
  if disallow.matches?(@subject)
49
- @failure_message_for_should_not = disallow.failure_message_for_should
49
+ @failure_message_for_should_not = disallow.failure_message_for_should_not
50
50
  true
51
51
  else
52
- @failure_message_for_should = disallow.failure_message_for_should_not
52
+ @failure_message_for_should = disallow.failure_message_for_should
53
53
  false
54
54
  end
55
55
  end
@@ -309,7 +309,11 @@ module Shoulda # :nodoc:
309
309
  end
310
310
 
311
311
  def join_table
312
- reflection.options[:join_table].to_s
312
+ if reflection.respond_to? :join_table
313
+ reflection.join_table.to_s
314
+ else
315
+ reflection.options[:join_table].to_s
316
+ end
313
317
  end
314
318
 
315
319
  def associated_class
@@ -1,5 +1,5 @@
1
1
  module Shoulda
2
2
  module Matchers
3
- VERSION = '2.1.0'.freeze
3
+ VERSION = '2.2.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Shoulda::Matchers::ActiveModel::ComparisonMatcher do
4
+ context 'is_greater_than' do
5
+ it { instance_with_validations(:greater_than => 2).should matcher.is_greater_than(2) }
6
+ it { instance_without_validations.should_not matcher.is_greater_than(2) }
7
+ end
8
+
9
+ context 'greater_than_or_equal_to' do
10
+ it { instance_with_validations(:greater_than_or_equal_to => 2).should matcher.is_greater_than_or_equal_to(2) }
11
+ it { instance_without_validations.should_not matcher.is_greater_than_or_equal_to(2) }
12
+ end
13
+
14
+ context 'less_than' do
15
+ it { instance_with_validations(:less_than => 2).should matcher.is_less_than(2) }
16
+ it { instance_without_validations.should_not matcher.is_less_than(2) }
17
+ end
18
+
19
+ context 'less_than_or_equal_to' do
20
+ it { instance_with_validations(:less_than_or_equal_to => 2).should matcher.is_less_than_or_equal_to(2) }
21
+ it { instance_without_validations.should_not matcher.is_less_than_or_equal_to(2) }
22
+ end
23
+
24
+ def instance_with_validations(options = {})
25
+ define_model :example, :attr => :string do
26
+ validates_numericality_of :attr, options
27
+ attr_accessible :attr
28
+ end.new
29
+ end
30
+
31
+ def instance_without_validations
32
+ define_model :example, :attr => :string do
33
+ attr_accessible :attr
34
+ end.new
35
+ end
36
+
37
+ def matcher
38
+ validate_numericality_of(:attr)
39
+ end
40
+ end
@@ -29,8 +29,13 @@ describe Shoulda::Matchers::ActiveModel::ValidatePresenceOfMatcher do
29
29
 
30
30
  context 'an ActiveModel class without a presence validation' do
31
31
  it 'rejects' do
32
- define_active_model_class('Example', :accessors => [:attr]).new.
33
- should_not matcher
32
+ active_model.should_not matcher
33
+ end
34
+
35
+ it 'provides the correct failure message' do
36
+ message = %{Expected errors to include "can't be blank" when attr is set to nil, got no errors}
37
+
38
+ expect { active_model.should matcher }.to fail_with_message(message)
34
39
  end
35
40
  end
36
41
 
@@ -125,10 +130,12 @@ describe Shoulda::Matchers::ActiveModel::ValidatePresenceOfMatcher do
125
130
  end.new
126
131
  end
127
132
 
133
+ def active_model(&block)
134
+ define_active_model_class('Example', :accessors => [:attr], &block).new
135
+ end
136
+
128
137
  def active_model_validating_presence
129
- define_active_model_class('Example', :accessors => [:attr]) do
130
- validates_presence_of :attr
131
- end.new
138
+ active_model { validates_presence_of :attr }
132
139
  end
133
140
 
134
141
  def has_many_children(options = {})
@@ -118,6 +118,13 @@ describe Shoulda::Matchers::ActiveModel::ValidateUniquenessOfMatcher do
118
118
  should matcher.scoped_to(:scope1)
119
119
  end
120
120
 
121
+ context 'with an existing record that conflicts with scope.next' do
122
+ it 'accepts' do
123
+ validating_scoped_uniqueness_with_conflicting_next(:scope1, :date, :scope1 => Date.today).
124
+ should matcher.scoped_to(:scope1)
125
+ end
126
+ end
127
+
121
128
  context 'when too narrow of a scope is specified' do
122
129
  it 'rejects' do
123
130
  validating_scoped_uniqueness([:scope1, :scope2], :date, :scope1 => Date.today, :scope2 => Date.today).
@@ -132,6 +139,13 @@ describe Shoulda::Matchers::ActiveModel::ValidateUniquenessOfMatcher do
132
139
  should matcher.scoped_to(:scope1)
133
140
  end
134
141
 
142
+ context 'with an existing record that conflicts with scope.next' do
143
+ it 'accepts' do
144
+ validating_scoped_uniqueness_with_conflicting_next(:scope1, :datetime, :scope1 => DateTime.now).
145
+ should matcher.scoped_to(:scope1)
146
+ end
147
+ end
148
+
135
149
  context 'with a nil value' do
136
150
  it 'accepts' do
137
151
  validating_scoped_uniqueness([:scope1], :datetime, :scope1 => nil).
@@ -145,11 +159,22 @@ describe Shoulda::Matchers::ActiveModel::ValidateUniquenessOfMatcher do
145
159
  should_not matcher.scoped_to(:scope1, :scope2, :other)
146
160
  end
147
161
  end
162
+
163
+ context 'with an existing record that conflicts with scope.next' do
164
+ it 'accepts' do
165
+ validating_scoped_uniqueness_with_conflicting_next(:scope1, :scope1 => 1).
166
+ should matcher.scoped_to(:scope1)
167
+ end
168
+ end
148
169
  end
149
170
 
150
171
  def create_existing_record(attributes = {})
172
+ @existing ||= create_record(attributes)
173
+ end
174
+
175
+ def create_record(attributes = {})
151
176
  default_attributes = {:attr => 'value', :scope1 => 1, :scope2 => 2, :other => 3}
152
- @existing ||= Example.create!(default_attributes.merge(attributes))
177
+ Example.create!(default_attributes.merge(attributes))
153
178
  end
154
179
 
155
180
  def define_scoped_model(scope, scope_attr_type = :integer)
@@ -166,6 +191,16 @@ describe Shoulda::Matchers::ActiveModel::ValidateUniquenessOfMatcher do
166
191
  create_existing_record(attributes)
167
192
  model
168
193
  end
194
+
195
+ def validating_scoped_uniqueness_with_conflicting_next(*args)
196
+ attributes = args.extract_options!
197
+ model = define_scoped_model(*args).new
198
+ 2.times do
199
+ attributes[:scope1] = attributes[:scope1].next
200
+ create_record(attributes)
201
+ end
202
+ model
203
+ end
169
204
  end
170
205
 
171
206
  context 'a model with a case-sensitive uniqueness validation on a string attribute and an existing record' do
@@ -0,0 +1,32 @@
1
+ RSpec::Matchers.define :fail_with_message do |expected|
2
+ match do |block|
3
+ @actual = nil
4
+
5
+ begin
6
+ block.call
7
+ rescue RSpec::Expectations::ExpectationNotMetError => ex
8
+ @actual = ex.message
9
+ end
10
+
11
+ @actual && @actual == expected
12
+ end
13
+
14
+ failure_message_for_should do
15
+ msg = "Expectation should have failed with message '#{expected}'"
16
+
17
+ if @actual
18
+ msg << ", actually failed with '#{@actual}'"
19
+ else
20
+ msg << ", but did not fail."
21
+ end
22
+
23
+ msg
24
+ end
25
+
26
+ failure_message_for_should_not do
27
+ msg = "Expectation should not have failed with message '#{expected}'"
28
+ msg << ", but did."
29
+
30
+ msg
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Tammer Saleh
@@ -13,11 +14,12 @@ authors:
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
- date: 2013-05-05 00:00:00.000000000 Z
17
+ date: 2013-06-11 00:00:00.000000000 Z
17
18
  dependencies:
18
19
  - !ruby/object:Gem::Dependency
19
20
  name: activesupport
20
21
  requirement: !ruby/object:Gem::Requirement
22
+ none: false
21
23
  requirements:
22
24
  - - ! '>='
23
25
  - !ruby/object:Gem::Version
@@ -25,6 +27,7 @@ dependencies:
25
27
  type: :runtime
26
28
  prerelease: false
27
29
  version_requirements: !ruby/object:Gem::Requirement
30
+ none: false
28
31
  requirements:
29
32
  - - ! '>='
30
33
  - !ruby/object:Gem::Version
@@ -32,6 +35,7 @@ dependencies:
32
35
  - !ruby/object:Gem::Dependency
33
36
  name: appraisal
34
37
  requirement: !ruby/object:Gem::Requirement
38
+ none: false
35
39
  requirements:
36
40
  - - ~>
37
41
  - !ruby/object:Gem::Version
@@ -39,6 +43,7 @@ dependencies:
39
43
  type: :development
40
44
  prerelease: false
41
45
  version_requirements: !ruby/object:Gem::Requirement
46
+ none: false
42
47
  requirements:
43
48
  - - ~>
44
49
  - !ruby/object:Gem::Version
@@ -46,6 +51,7 @@ dependencies:
46
51
  - !ruby/object:Gem::Dependency
47
52
  name: aruba
48
53
  requirement: !ruby/object:Gem::Requirement
54
+ none: false
49
55
  requirements:
50
56
  - - ! '>='
51
57
  - !ruby/object:Gem::Version
@@ -53,6 +59,7 @@ dependencies:
53
59
  type: :development
54
60
  prerelease: false
55
61
  version_requirements: !ruby/object:Gem::Requirement
62
+ none: false
56
63
  requirements:
57
64
  - - ! '>='
58
65
  - !ruby/object:Gem::Version
@@ -60,6 +67,7 @@ dependencies:
60
67
  - !ruby/object:Gem::Dependency
61
68
  name: bourne
62
69
  requirement: !ruby/object:Gem::Requirement
70
+ none: false
63
71
  requirements:
64
72
  - - ~>
65
73
  - !ruby/object:Gem::Version
@@ -67,6 +75,7 @@ dependencies:
67
75
  type: :development
68
76
  prerelease: false
69
77
  version_requirements: !ruby/object:Gem::Requirement
78
+ none: false
70
79
  requirements:
71
80
  - - ~>
72
81
  - !ruby/object:Gem::Version
@@ -74,6 +83,7 @@ dependencies:
74
83
  - !ruby/object:Gem::Dependency
75
84
  name: bundler
76
85
  requirement: !ruby/object:Gem::Requirement
86
+ none: false
77
87
  requirements:
78
88
  - - ~>
79
89
  - !ruby/object:Gem::Version
@@ -81,6 +91,7 @@ dependencies:
81
91
  type: :development
82
92
  prerelease: false
83
93
  version_requirements: !ruby/object:Gem::Requirement
94
+ none: false
84
95
  requirements:
85
96
  - - ~>
86
97
  - !ruby/object:Gem::Version
@@ -88,6 +99,7 @@ dependencies:
88
99
  - !ruby/object:Gem::Dependency
89
100
  name: cucumber
90
101
  requirement: !ruby/object:Gem::Requirement
102
+ none: false
91
103
  requirements:
92
104
  - - ~>
93
105
  - !ruby/object:Gem::Version
@@ -95,6 +107,7 @@ dependencies:
95
107
  type: :development
96
108
  prerelease: false
97
109
  version_requirements: !ruby/object:Gem::Requirement
110
+ none: false
98
111
  requirements:
99
112
  - - ~>
100
113
  - !ruby/object:Gem::Version
@@ -102,6 +115,7 @@ dependencies:
102
115
  - !ruby/object:Gem::Dependency
103
116
  name: rails
104
117
  requirement: !ruby/object:Gem::Requirement
118
+ none: false
105
119
  requirements:
106
120
  - - ~>
107
121
  - !ruby/object:Gem::Version
@@ -109,6 +123,7 @@ dependencies:
109
123
  type: :development
110
124
  prerelease: false
111
125
  version_requirements: !ruby/object:Gem::Requirement
126
+ none: false
112
127
  requirements:
113
128
  - - ~>
114
129
  - !ruby/object:Gem::Version
@@ -116,6 +131,7 @@ dependencies:
116
131
  - !ruby/object:Gem::Dependency
117
132
  name: rake
118
133
  requirement: !ruby/object:Gem::Requirement
134
+ none: false
119
135
  requirements:
120
136
  - - ! '>='
121
137
  - !ruby/object:Gem::Version
@@ -123,6 +139,7 @@ dependencies:
123
139
  type: :development
124
140
  prerelease: false
125
141
  version_requirements: !ruby/object:Gem::Requirement
142
+ none: false
126
143
  requirements:
127
144
  - - ! '>='
128
145
  - !ruby/object:Gem::Version
@@ -130,6 +147,7 @@ dependencies:
130
147
  - !ruby/object:Gem::Dependency
131
148
  name: rspec-rails
132
149
  requirement: !ruby/object:Gem::Requirement
150
+ none: false
133
151
  requirements:
134
152
  - - ~>
135
153
  - !ruby/object:Gem::Version
@@ -137,6 +155,7 @@ dependencies:
137
155
  type: :development
138
156
  prerelease: false
139
157
  version_requirements: !ruby/object:Gem::Requirement
158
+ none: false
140
159
  requirements:
141
160
  - - ~>
142
161
  - !ruby/object:Gem::Version
@@ -144,6 +163,7 @@ dependencies:
144
163
  - !ruby/object:Gem::Dependency
145
164
  name: strong_parameters
146
165
  requirement: !ruby/object:Gem::Requirement
166
+ none: false
147
167
  requirements:
148
168
  - - ! '>='
149
169
  - !ruby/object:Gem::Version
@@ -151,6 +171,7 @@ dependencies:
151
171
  type: :development
152
172
  prerelease: false
153
173
  version_requirements: !ruby/object:Gem::Requirement
174
+ none: false
154
175
  requirements:
155
176
  - - ! '>='
156
177
  - !ruby/object:Gem::Version
@@ -194,6 +215,7 @@ files:
194
215
  - lib/shoulda/matchers/active_model.rb
195
216
  - lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb
196
217
  - lib/shoulda/matchers/active_model/allow_value_matcher.rb
218
+ - lib/shoulda/matchers/active_model/comparison_matcher.rb
197
219
  - lib/shoulda/matchers/active_model/disallow_value_matcher.rb
198
220
  - lib/shoulda/matchers/active_model/ensure_exclusion_of_matcher.rb
199
221
  - lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb
@@ -233,6 +255,7 @@ files:
233
255
  - spec/shoulda/matchers/action_controller/set_the_flash_matcher_spec.rb
234
256
  - spec/shoulda/matchers/active_model/allow_mass_assignment_of_matcher_spec.rb
235
257
  - spec/shoulda/matchers/active_model/allow_value_matcher_spec.rb
258
+ - spec/shoulda/matchers/active_model/comparison_matcher_spec.rb
236
259
  - spec/shoulda/matchers/active_model/disallow_value_matcher_spec.rb
237
260
  - spec/shoulda/matchers/active_model/ensure_exclusion_of_matcher_spec.rb
238
261
  - spec/shoulda/matchers/active_model/ensure_inclusion_of_matcher_spec.rb
@@ -258,32 +281,37 @@ files:
258
281
  - spec/support/activemodel_helpers.rb
259
282
  - spec/support/class_builder.rb
260
283
  - spec/support/controller_builder.rb
284
+ - spec/support/fail_with_message_matcher.rb
261
285
  - spec/support/i18n_faker.rb
262
286
  - spec/support/mailer_builder.rb
263
287
  - spec/support/model_builder.rb
264
288
  homepage: http://thoughtbot.com/community/
265
289
  licenses:
266
290
  - MIT
267
- metadata: {}
268
291
  post_install_message:
269
292
  rdoc_options: []
270
293
  require_paths:
271
294
  - lib
272
295
  required_ruby_version: !ruby/object:Gem::Requirement
296
+ none: false
273
297
  requirements:
274
298
  - - ! '>='
275
299
  - !ruby/object:Gem::Version
276
300
  version: 1.9.2
277
301
  required_rubygems_version: !ruby/object:Gem::Requirement
302
+ none: false
278
303
  requirements:
279
304
  - - ! '>='
280
305
  - !ruby/object:Gem::Version
281
306
  version: '0'
307
+ segments:
308
+ - 0
309
+ hash: -819827211326946957
282
310
  requirements: []
283
311
  rubyforge_project:
284
- rubygems_version: 2.0.3
312
+ rubygems_version: 1.8.23
285
313
  signing_key:
286
- specification_version: 4
314
+ specification_version: 3
287
315
  summary: Making tests easy on the fingers and eyes
288
316
  test_files:
289
317
  - features/rails_integration.feature
@@ -300,6 +328,7 @@ test_files:
300
328
  - spec/shoulda/matchers/action_controller/set_the_flash_matcher_spec.rb
301
329
  - spec/shoulda/matchers/active_model/allow_mass_assignment_of_matcher_spec.rb
302
330
  - spec/shoulda/matchers/active_model/allow_value_matcher_spec.rb
331
+ - spec/shoulda/matchers/active_model/comparison_matcher_spec.rb
303
332
  - spec/shoulda/matchers/active_model/disallow_value_matcher_spec.rb
304
333
  - spec/shoulda/matchers/active_model/ensure_exclusion_of_matcher_spec.rb
305
334
  - spec/shoulda/matchers/active_model/ensure_inclusion_of_matcher_spec.rb
@@ -325,6 +354,7 @@ test_files:
325
354
  - spec/support/activemodel_helpers.rb
326
355
  - spec/support/class_builder.rb
327
356
  - spec/support/controller_builder.rb
357
+ - spec/support/fail_with_message_matcher.rb
328
358
  - spec/support/i18n_faker.rb
329
359
  - spec/support/mailer_builder.rb
330
360
  - spec/support/model_builder.rb
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YzVkMDJkYmRiNjE2ODM0MDMzMzQxODQwZTBjMWEzM2RmYTMyZTIzYQ==
5
- data.tar.gz: !binary |-
6
- NTExOTlmMTUyOGU1NjVlZjM0YzVhN2FiNDVjYTE3NmI0ZDU0ZjNiMQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- NWI5ZTA2ZGJjMTJmNjgxYjI0Mjk1NGZhYjZkYzUyMmIwNjJjZmJhYjRjZGRh
10
- NTA2MjIwZDMzZjQ3YmIxMTNjNGUwMjEzYzg1ZjkzZDA2ZThlY2UyZWY5OGNm
11
- OTY0ZTg4ZjM2ODQxZTU0OTg4MDhmMTA0ZDU3YjEyNTcxZmVlNDQ=
12
- data.tar.gz: !binary |-
13
- N2FkMWNjZTgzOTgwZjcwOWE2YjE2NzU1ZDNmMDQwZDEzNjQzMjVhMTAxYjQy
14
- NjJjYmI0NmFlN2E3OTZkOGU0ODIzNDllMDgwZjlhNjRmNTRmMWQ3YWU5ZGNk
15
- NzA0NmE5MzVkM2JhODAzNjMyNDU3NzBlYzIyZWUwYmRiNzEwMjI=