omg_validator 0.0.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/.yardoc/checksums +14 -17
  2. data/.yardoc/object_types +0 -0
  3. data/.yardoc/objects/root.dat +0 -0
  4. data/.yardoc/proxy_types +0 -0
  5. data/README.markdown +2 -7
  6. data/README.rdoc +2 -7
  7. data/doc/OmgValidator.html +31 -26
  8. data/doc/OmgValidator/Validators.html +30 -24
  9. data/doc/OmgValidator/Validators/AlphaDashValidator.html +57 -39
  10. data/doc/OmgValidator/Validators/{DecimalValidator.html → AlphaNumericDashValidator.html} +62 -43
  11. data/doc/OmgValidator/Validators/AlphaNumericValidator.html +55 -37
  12. data/doc/OmgValidator/Validators/AlphaValidator.html +55 -37
  13. data/doc/OmgValidator/Validators/EmailValidator.html +55 -37
  14. data/doc/OmgValidator/Validators/IpAddressValidator.html +55 -37
  15. data/doc/OmgValidator/Validators/PhoneNumberValidator.html +56 -38
  16. data/doc/OmgValidator/Validators/PostalCodeValidator.html +55 -37
  17. data/doc/OmgValidator/Validators/PostalOrZipCodeValidator.html +55 -37
  18. data/doc/OmgValidator/Validators/StrongPasswordValidator.html +56 -38
  19. data/doc/OmgValidator/Validators/UrlValidator.html +56 -40
  20. data/doc/OmgValidator/Validators/ZipCodeValidator.html +55 -36
  21. data/doc/_index.html +41 -74
  22. data/doc/class_list.html +12 -6
  23. data/doc/css/full_list.css +4 -2
  24. data/doc/css/style.css +50 -44
  25. data/doc/file.README.html +32 -28
  26. data/doc/file_list.html +12 -6
  27. data/doc/frames.html +20 -5
  28. data/doc/index.html +32 -28
  29. data/doc/js/app.js +52 -43
  30. data/doc/js/full_list.js +9 -9
  31. data/doc/js/jquery.js +4 -16
  32. data/doc/method_list.html +25 -43
  33. data/doc/top-level-namespace.html +25 -18
  34. data/lib/omg_validator.rb +1 -4
  35. data/lib/omg_validator/validators/alpha_dash_validator.rb +10 -6
  36. data/lib/omg_validator/validators/alpha_numeric_dash_validator.rb +25 -0
  37. data/lib/omg_validator/validators/alpha_numeric_validator.rb +8 -4
  38. data/lib/omg_validator/validators/alpha_validator.rb +7 -3
  39. data/lib/omg_validator/validators/email_validator.rb +7 -3
  40. data/lib/omg_validator/validators/ip_address_validator.rb +7 -3
  41. data/lib/omg_validator/validators/phone_number_validator.rb +7 -3
  42. data/lib/omg_validator/validators/postal_code_validator.rb +7 -3
  43. data/lib/omg_validator/validators/postal_or_zip_code_validator.rb +7 -3
  44. data/lib/omg_validator/validators/strong_password_validator.rb +7 -3
  45. data/lib/omg_validator/validators/url_validator.rb +7 -3
  46. data/lib/omg_validator/validators/zip_code_validator.rb +7 -3
  47. data/lib/omg_validator/version.rb +1 -1
  48. data/omg_validator-0.0.7.gem +0 -0
  49. data/omg_validator-0.0.8.gem +0 -0
  50. data/test/alpha_dash_validator_test.rb +26 -0
  51. data/test/alpha_numeric_dash_validator_test.rb +26 -0
  52. data/test/alpha_numeric_validator_test.rb +26 -0
  53. data/test/alpha_validator_test.rb +26 -0
  54. data/test/dummy/app/models/thing.rb +4 -10
  55. data/test/email_validator_test.rb +26 -0
  56. data/test/ip_address_validator_test.rb +26 -0
  57. data/test/support/things.rb +18 -263
  58. data/test/support/things.yml +109 -0
  59. metadata +23 -20
  60. data/doc/OmgValidator/Validators/DateValidator.html +0 -207
  61. data/doc/OmgValidator/Validators/IntegerValidator.html +0 -209
  62. data/doc/OmgValidator/Validators/NumericValidator.html +0 -208
  63. data/lib/omg_validator/validators/date_validator.rb +0 -19
  64. data/lib/omg_validator/validators/decimal_validator.rb +0 -21
  65. data/lib/omg_validator/validators/integer_validator.rb +0 -21
  66. data/lib/omg_validator/validators/numeric_validator.rb +0 -21
  67. data/test/omg_validator_test.rb +0 -247
@@ -1,208 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
- <title>
7
- Class: OmgValidator::Validators::NumericValidator
8
-
9
- &mdash; Documentation by YARD 0.7.5
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- relpath = '../..';
19
- if (relpath != '') relpath += '/';
20
- </script>
21
-
22
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
23
-
24
- <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
25
-
26
-
27
- </head>
28
- <body>
29
- <script type="text/javascript" charset="utf-8">
30
- if (window.top.frames.main) document.body.className = 'frames';
31
- </script>
32
-
33
- <div id="header">
34
- <div id="menu">
35
-
36
- <a href="../../_index.html">Index (N)</a> &raquo;
37
- <span class='title'><span class='object_link'><a href="../../OmgValidator.html" title="OmgValidator (module)">OmgValidator</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Validators.html" title="OmgValidator::Validators (module)">Validators</a></span></span>
38
- &raquo;
39
- <span class="title">NumericValidator</span>
40
-
41
-
42
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
- </div>
44
-
45
- <div id="search">
46
-
47
- <a id="class_list_link" href="#">Class List</a>
48
-
49
- <a id="method_list_link" href="#">Method List</a>
50
-
51
- <a id="file_list_link" href="#">File List</a>
52
-
53
- </div>
54
- <div class="clear"></div>
55
- </div>
56
-
57
- <iframe id="search_frame"></iframe>
58
-
59
- <div id="content"><h1>Class: OmgValidator::Validators::NumericValidator
60
-
61
-
62
-
63
- </h1>
64
-
65
- <dl class="box">
66
-
67
- <dt class="r1">Inherits:</dt>
68
- <dd class="r1">
69
- <span class="inheritName">ActiveModel::EachValidator</span>
70
-
71
- <ul class="fullTree">
72
- <li>Object</li>
73
-
74
- <li class="next">ActiveModel::EachValidator</li>
75
-
76
- <li class="next">OmgValidator::Validators::NumericValidator</li>
77
-
78
- </ul>
79
- <a href="#" class="inheritanceTree">show all</a>
80
-
81
- </dd>
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
- <dt class="r2 last">Defined in:</dt>
92
- <dd class="r2 last">lib/omg_validator/validators/numeric_validator.rb</dd>
93
-
94
- </dl>
95
- <div class="clear"></div>
96
-
97
- <h2>Overview</h2><div class="docstring">
98
- <div class="discussion">
99
- <p>
100
- Checks whether input is a valid number
101
- </p>
102
- <p>
103
- validates :count, number: true
104
- </p>
105
- <p>
106
- matches: 123, 523.12, -23, -23.12 does not match: six, 23.23.12, 1,000
107
- </p>
108
-
109
-
110
- </div>
111
- </div>
112
- <div class="tags">
113
-
114
-
115
- </div>
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
- <h2>
124
- Instance Method Summary
125
- <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
126
- </h2>
127
-
128
- <ul class="summary">
129
-
130
- <li class="public ">
131
- <span class="summary_signature">
132
-
133
- <a href="#validate_each-instance_method" title="#validate_each (instance method)">- (Object) <strong>validate_each</strong>(record, attribute, value) </a>
134
-
135
-
136
-
137
- </span>
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
- <span class="summary_desc"><div class='inline'></div></span>
147
-
148
- </li>
149
-
150
-
151
- </ul>
152
-
153
-
154
-
155
-
156
-
157
- <div id="instance_method_details" class="method_details_list">
158
- <h2>Instance Method Details</h2>
159
-
160
-
161
- <div class="method_details first">
162
- <p class="signature first" id="validate_each-instance_method">
163
-
164
- - (<tt>Object</tt>) <strong>validate_each</strong>(record, attribute, value)
165
-
166
-
167
-
168
- </p><table class="source_code">
169
- <tr>
170
- <td>
171
- <pre class="lines">
172
-
173
-
174
- 10
175
- 11
176
- 12
177
- 13
178
- 14
179
- 15
180
- 16</pre>
181
- </td>
182
- <td>
183
- <pre class="code"><span class="info file"># File 'lib/omg_validator/validators/numeric_validator.rb', line 10</span>
184
-
185
- <span class='kw'>def</span> <span class='id identifier rubyid_validate_each'>validate_each</span><span class='lparen'>(</span><span class='id identifier rubyid_record'>record</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute'>attribute</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
186
- <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
187
- <span class='id identifier rubyid_reg'>reg</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[\-+]?[0-9]*\.?[0-9]+$</span><span class='regexp_end'>/</span></span>
188
- <span class='kw'>unless</span> <span class='id identifier rubyid_reg'>reg</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
189
- <span class='id identifier rubyid_record'>record</span><span class='period'>.</span><span class='id identifier rubyid_errors'>errors</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute'>attribute</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>must be a valid number</span><span class='tstring_end'>&quot;</span></span>
190
- <span class='kw'>end</span>
191
- <span class='kw'>end</span></pre>
192
- </td>
193
- </tr>
194
- </table>
195
- </div>
196
-
197
- </div>
198
-
199
- </div>
200
-
201
- <div id="footer">
202
- Generated on Thu Apr 5 00:05:42 2012 by
203
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
204
- 0.7.5 (ruby-1.9.2).
205
- </div>
206
-
207
- </body>
208
- </html>
@@ -1,19 +0,0 @@
1
- module OmgValidator
2
- module Validators
3
- # Checks whether input is a valid date
4
- #
5
- # validates :posting_date, date: true
6
- class DateValidator < ActiveModel::EachValidator
7
- def validate_each(record, attribute, value)
8
- return nil if value.blank?
9
- begin
10
- Date.parse(value)
11
- rescue
12
- record.errors[attribute] = "must be a valid date"
13
- end
14
- end
15
- end
16
- end
17
- end
18
-
19
- ActiveModel::Validations::DateValidator = OmgValidator::Validators::AlphaValidator
@@ -1,21 +0,0 @@
1
- module OmgValidator
2
- module Validators
3
- # Checks whether input is a valid floating point number
4
- #
5
- # validates :total_value, decimal: true
6
- #
7
- # matches: 10.00, -23.12, 9.99, 1.9002302
8
- # does not match: 123, 99, -23, 1,000
9
- class DecimalValidator < ActiveModel::EachValidator
10
- def validate_each(record, attribute, value)
11
- return nil if value.blank?
12
- reg = /^[\-+]?[0-9]+\.[0-9]+$/
13
- unless reg.match(value)
14
- record.errors[attribute] = "must be a valid floating point number"
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
21
- ActiveModel::Validations::DecimalValidator = OmgValidator::Validators::DecimalValidator
@@ -1,21 +0,0 @@
1
- module OmgValidator
2
- module Validators
3
- # Checks whether input is a valid integer
4
- #
5
- # validates :count, integer: true
6
- #
7
- # matches: 10, 20, 2323, -20, 10000000,
8
- # does not match: 10.50, -22.21, 1,000, ten
9
- class IntegerValidator < ActiveModel::EachValidator
10
- def validate_each(record, attribute, value)
11
- return nil if value.blank?
12
- reg = /^[\-+]?[0-9]+$/
13
- unless reg.match(value)
14
- record.errors[attribute] = "must be a valid integer"
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
21
- ActiveModel::Validations::IntegerValidator = OmgValidator::Validators::IntegerValidator
@@ -1,21 +0,0 @@
1
- module OmgValidator
2
- module Validators
3
- # Checks whether input is a valid number
4
- #
5
- # validates :count, number: true
6
- #
7
- # matches: 123, 523.12, -23, -23.12
8
- # does not match: six, 23.23.12, 1,000
9
- class NumericValidator < ActiveModel::EachValidator
10
- def validate_each(record, attribute, value)
11
- return nil if value.blank?
12
- reg = /^[\-+]?[0-9]*\.?[0-9]+$/
13
- unless reg.match(value)
14
- record.errors[attribute] = "must be a valid number"
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
21
- ActiveModel::Validations::NumericValidator = OmgValidator::Validators::NumericValidator
@@ -1,247 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OmgValidatorTest < ActiveSupport::TestCase
4
- def setup
5
- @thing = Thing.new
6
- end
7
-
8
- def teardown
9
- @thing = nil
10
- end
11
-
12
- test "truth" do
13
- assert_kind_of Module, OmgValidator
14
- end
15
-
16
- # alpha
17
- test "thing should be invalid if alpha contains non-alpha characters" do
18
- Things.alphas[:invalid].each do |alpha|
19
- @thing.alpha = alpha
20
- assert !@thing.valid?, "#{alpha} - #{@thing.errors.full_messages.join("\n")}"
21
- end
22
- end
23
-
24
- test "thing should be valid if alpha contains only alpha characters" do
25
- Things.alphas[:valid].each do |alpha|
26
- @thing.alpha = alpha
27
- assert @thing.valid?, "#{alpha} - #{@thing.errors.full_messages.join("\n")}"
28
- end
29
- end
30
-
31
- # alpha numeric
32
- test "thing should be invalid if alpha_numeric contains non-alpha-numeric characters" do
33
- Things.alpha_numerics[:invalid].each do |alpha_numeric|
34
- @thing.alpha_numeric = alpha_numeric
35
- assert !@thing.valid?, "#{alpha_numeric} - #{@thing.errors.full_messages.join("\n")}"
36
- end
37
- end
38
-
39
- test "thing should be valid if alpha_numeric contains only alpha-numeric characters" do
40
- Things.alpha_numerics[:valid].each do |alpha_numeric|
41
- @thing.alpha_numeric = alpha_numeric
42
- assert @thing.valid?, "#{alpha_numeric} - #{@thing.errors.full_messages.join("\n")}"
43
- end
44
- end
45
-
46
- # alpha dash
47
- test "thing should be invalid if alpha_dash contains non-alpha-numeric-dashes characters" do
48
- Things.alpha_dashes[:invalid].each do |alpha_dash|
49
- @thing.alpha_dash = alpha_dash
50
- assert !@thing.valid?, "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
51
- end
52
- end
53
-
54
- test "thing should be valid if alpha_dash contains only alpha-numeric-dashes characters" do
55
- Things.alpha_dashes[:valid].each do |alpha_dash|
56
- @thing.alpha_dash = alpha_dash
57
- assert @thing.valid? "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
58
- end
59
- end
60
-
61
- test "thing should be valid if alpha_dash contains only alpha or dash characters" do
62
- Things.alpha_dashes[:valid].each do |alpha_dash|
63
- @thing.alpha_dash = alpha_dash
64
- assert @thing.valid?, "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
65
- end
66
- end
67
-
68
- # zip code
69
- test "thing should be invalid if zip_code is not a valid zip_code" do
70
- Things.zip_codes[:invalid].each do |zip|
71
- @thing.zip_code = zip
72
- assert !@thing.valid?, "#{zip} - #{@thing.errors.full_messages.join("\n")}"
73
- end
74
- end
75
-
76
- test "thing should be valid if zip_code is a valid zip code" do
77
- Things.zip_codes[:valid].each do |zip|
78
- @thing.zip_code = zip
79
- assert @thing.valid?, "#{zip} - #{@thing.errors.full_messages.join("\n")}"
80
- end
81
- end
82
-
83
- # postal or zip code
84
- test "thing should be invalid if postal_or_zip_code is not a valid postal or zip code" do
85
- Things.postal_codes[:invalid].concat(Things.zip_codes[:invalid]).each do |zip_or_postal|
86
- @thing.postal_or_zip_code = zip_or_postal
87
- assert !@thing.valid?, "#{zip_or_postal} - #{@thing.errors.full_messages.join("\n")}"
88
- end
89
- end
90
-
91
- test "thing should be valid if postal_or_zip_code is a valid postal or zip code" do
92
- Things.postal_codes[:valid].concat(Things.zip_codes[:valid]).each do |zip_or_postal|
93
- @thing.postal_or_zip_code = zip_or_postal
94
- assert @thing.valid?, "#{zip_or_postal} - #{@thing.errors.full_messages.join("\n")}"
95
- end
96
- end
97
-
98
- # postal code
99
- test "thing should be valid if postal_code is a valid postal code" do
100
- Things.postal_codes[:valid].each do |code|
101
- @thing.postal_code = code
102
- assert @thing.valid?, "#{code} - #{@thing.errors.full_messages.join("\n")}"
103
- end
104
- end
105
-
106
- test "thing should be invalid if postal_code is not a valid postal code" do
107
- Things.postal_codes[:invalid].each do |code|
108
- @thing.postal_code = code
109
- assert !@thing.valid?, "#{code} - #{@thing.errors.full_messages.join("\n")}"
110
- end
111
- end
112
-
113
- # decimals
114
- test "thing should be valid if decimal is a valid decimal" do
115
- Things.decimals[:valid].each do |decimal|
116
- @thing.decimal = decimal
117
- assert @thing.valid?, "#{decimal} - #{@thing.errors.full_messages.join("\n")}"
118
- end
119
- end
120
-
121
- test "thing should be invalid if decimal is not a valid decimal" do
122
- Things.decimals[:invalid].each do |decimal|
123
- @thing.decimal = decimal
124
- assert !@thing.valid?, "#{decimal} - #{@thing.errors.full_messages.join("\n")}"
125
- end
126
- end
127
-
128
- # integer
129
- test "thing should be valid if integer is a valid integer" do
130
- Things.integers[:valid].each do |integer|
131
- @thing.integer = integer
132
- assert @thing.valid?, "#{integer} - #{@thing.errors.full_messages.join("\n")}"
133
- end
134
- end
135
-
136
- test "thing should be invalid if integer is not a valid integer" do
137
- Things.integers[:invalid].each do |integer|
138
- @thing.integer = integer
139
- assert !@thing.valid?, "#{integer} - #{@thing.errors.full_messages.join("\n")}"
140
- end
141
- end
142
-
143
- # numeric
144
- test "thing should be valid if numeric is a valid numeric" do
145
- Things.numeric[:valid].each do |numeric|
146
- @thing.numeric = numeric
147
- assert @thing.valid?, "#{numeric} - #{@thing.errors.full_messages.join("\n")}"
148
- end
149
- end
150
-
151
- test "thing should be invalid if numeric is not a valid numeric" do
152
- Things.numeric[:invalid].each do |numeric|
153
- @thing.numeric = numeric
154
- assert !@thing.valid?, "#{numeric} - #{@thing.errors.full_messages.join("\n")}"
155
- end
156
- end
157
-
158
- # email
159
- test "thing should be valid if email is a valid email" do
160
- Things.emails[:valid].each do |email|
161
- @thing.email = email
162
- assert @thing.valid?, "#{email} - #{@thing.errors.full_messages.join("\n")}"
163
- end
164
- end
165
-
166
- test "thing should be invalid if email is not a valid email" do
167
- Things.emails[:invalid].each do |email|
168
- @thing.email = email
169
- assert !@thing.valid?, "#{email} - #{@thing.errors.full_messages.join("\n")}"
170
- end
171
- end
172
-
173
- # ip address
174
- test "thing should be valid if ip_address is a valid ip address" do
175
- Things.ip_addresses[:valid].each do |ip|
176
- @thing.ip_address = ip
177
- assert @thing.valid?, "#{ip} - #{@thing.errors.full_messages.join("\n")}"
178
- end
179
- end
180
-
181
- test "thing should be invalid if ip_address is not a valid ip address" do
182
- Things.ip_addresses[:invalid].each do |ip|
183
- @thing.ip_address = ip
184
- assert !@thing.valid?, "#{ip} - #{@thing.errors.full_messages.join("\n")}"
185
- end
186
- end
187
-
188
- # url
189
- test "thing should be valid if url is a valid url" do
190
- Things.urls[:valid].each do |url|
191
- @thing.url = url
192
- assert @thing.valid?, "#{url} - #{@thing.errors.full_messages.join("\n")}"
193
- end
194
- end
195
-
196
- test "thing should be invalid if url is not a valid url" do
197
- Things.urls[:invalid].each do |url|
198
- @thing.url = url
199
- assert !@thing.valid?, "#{url} - #{@thing.errors.full_messages.join("\n")}"
200
- end
201
- end
202
-
203
- # phone number
204
- test "thing should be valid if phone is a valid phone number" do
205
- Things.phone_numbers[:valid].each do |phone|
206
- @thing.phone = phone
207
- assert @thing.valid?, "#{phone} - #{@thing.errors.full_messages.join("\n")}"
208
- end
209
- end
210
-
211
- test "thing should be invalid if phone is not a valid phone number" do
212
- Things.phone_numbers[:invalid].each do |phone|
213
- @thing.phone = phone
214
- assert !@thing.valid?, "#{phone} - #{@thing.errors.full_messages.join("\n")}"
215
- end
216
- end
217
-
218
- # strong password
219
- test "thing should be valid if password is a valid strong password" do
220
- Things.strong_passwords[:valid].each do |password|
221
- @thing.password = password
222
- assert @thing.valid?, "#{password} - #{@thing.errors.full_messages.join("\n")}"
223
- end
224
- end
225
-
226
- test "thing should be invalid if password is not a valid strong password" do
227
- Things.strong_passwords[:invalid].each do |password|
228
- @thing.password = password
229
- assert !@thing.valid?, "#{password} - #{@thing.errors.full_messages.join("\n")}"
230
- end
231
- end
232
-
233
- # date
234
- test "thing should be valid if date is a valid date" do
235
- Things.dates[:valid].each do |date|
236
- @thing.date = date
237
- assert @thing.valid?, "#{date} - #{@thing.errors.full_messages.join("\n")}"
238
- end
239
- end
240
-
241
- test "thing should be invalid if date is not a valid date" do
242
- Things.dates[:invalid].each do |date|
243
- @thing.date = date
244
- assert !@thing.valid?, "#{date} - #{@thing.errors.full_messages.join("\n")}"
245
- end
246
- end
247
- end