omg_validator 0.0.8 → 1.0.0

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