anodator 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +13 -0
  4. data/Gemfile.lock +28 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.ja.rdoc +33 -0
  7. data/README.rdoc +41 -0
  8. data/Rakefile +50 -0
  9. data/VERSION +1 -0
  10. data/example/example_01.rb +129 -0
  11. data/lib/anodator/anodator_error.rb +5 -0
  12. data/lib/anodator/check_result.rb +41 -0
  13. data/lib/anodator/checker.rb +58 -0
  14. data/lib/anodator/input_spec.rb +199 -0
  15. data/lib/anodator/input_spec_item.rb +33 -0
  16. data/lib/anodator/message.rb +59 -0
  17. data/lib/anodator/output_spec.rb +164 -0
  18. data/lib/anodator/rule.rb +97 -0
  19. data/lib/anodator/rule_set.rb +52 -0
  20. data/lib/anodator/utils.rb +234 -0
  21. data/lib/anodator/validator/base.rb +168 -0
  22. data/lib/anodator/validator/blank_validator.rb +14 -0
  23. data/lib/anodator/validator/complex_validator.rb +60 -0
  24. data/lib/anodator/validator/configuration_error.rb +8 -0
  25. data/lib/anodator/validator/date_validator.rb +151 -0
  26. data/lib/anodator/validator/format_validator.rb +48 -0
  27. data/lib/anodator/validator/inclusion_validator.rb +21 -0
  28. data/lib/anodator/validator/length_validator.rb +37 -0
  29. data/lib/anodator/validator/numeric_validator.rb +46 -0
  30. data/lib/anodator/validator/presence_validator.rb +14 -0
  31. data/lib/anodator/validator.rb +10 -0
  32. data/lib/anodator.rb +3 -0
  33. data/spec/anodator/check_result_spec.rb +101 -0
  34. data/spec/anodator/checker_spec.rb +273 -0
  35. data/spec/anodator/input_spec_item_spec.rb +100 -0
  36. data/spec/anodator/input_spec_spec.rb +584 -0
  37. data/spec/anodator/message_spec.rb +112 -0
  38. data/spec/anodator/output_spec_spec.rb +355 -0
  39. data/spec/anodator/rule_set_spec.rb +190 -0
  40. data/spec/anodator/rule_spec.rb +169 -0
  41. data/spec/anodator/validator/base_spec.rb +214 -0
  42. data/spec/anodator/validator/blank_validator_spec.rb +52 -0
  43. data/spec/anodator/validator/complex_validator_spec.rb +268 -0
  44. data/spec/anodator/validator/date_validator_spec.rb +350 -0
  45. data/spec/anodator/validator/format_validator_spec.rb +158 -0
  46. data/spec/anodator/validator/inclusion_validator_spec.rb +77 -0
  47. data/spec/anodator/validator/length_validator_spec.rb +236 -0
  48. data/spec/anodator/validator/numeric_validator_spec.rb +468 -0
  49. data/spec/anodator/validator/presence_validator_spec.rb +52 -0
  50. data/spec/anodator/validator_spec.rb +16 -0
  51. data/spec/anodator_spec.rb +2 -0
  52. data/spec/spec_helper.rb +12 -0
  53. metadata +188 -0
@@ -0,0 +1,350 @@
1
+ require "spec_helper"
2
+
3
+ # Anodator::Validator::DateValidator
4
+ require "anodator/validator/date_validator"
5
+
6
+ include Anodator::Validator
7
+
8
+ describe DateValidator, ".new" do
9
+ context "with no parameters" do
10
+ it "should raise ArgumentError" do
11
+ lambda {
12
+ DateValidator.new
13
+ }.should raise_error ArgumentError
14
+ end
15
+ end
16
+
17
+ context "with only target expression" do
18
+ before(:each) do
19
+ @new_proc = lambda {
20
+ DateValidator.new("1")
21
+ }
22
+ end
23
+
24
+ it "should not raise error" do
25
+ @new_proc.should_not raise_error
26
+ end
27
+
28
+ it { @new_proc.call.format.should == "YYYY-MM-DD" }
29
+ end
30
+
31
+ context "with target expression and :format option" do
32
+ context ":format option is valid" do
33
+ before(:each) do
34
+ @new_proc = lambda {
35
+ DateValidator.new("1", :format => "YYYY/MM/DD")
36
+ }
37
+ end
38
+
39
+ it "should not raise error" do
40
+ @new_proc.should_not raise_error
41
+ end
42
+
43
+ context "and :from same format" do
44
+ before(:each) do
45
+ @new_proc = lambda {
46
+ DateValidator.new("1", :format => "YYYY/MM/DD", :from => "2011/01/01")
47
+ }
48
+ end
49
+
50
+ it "should not raise error" do
51
+ @new_proc.should_not raise_error
52
+ end
53
+ end
54
+ end
55
+
56
+ context ":format option contains double YYYY is invalid" do
57
+ before(:each) do
58
+ @new_proc = lambda {
59
+ DateValidator.new("1", :format => "YYYY/MM-DD YYYY")
60
+ }
61
+ end
62
+
63
+ it "should raise ArgumentError" do
64
+ @new_proc.should raise_error ArgumentError
65
+ end
66
+ end
67
+
68
+ context ":format option not contains D is invalid" do
69
+ before(:each) do
70
+ @new_proc = lambda {
71
+ DateValidator.new("1", :format => "YY/M")
72
+ }
73
+ end
74
+
75
+ it "should raise ArgumentError" do
76
+ @new_proc.should raise_error ArgumentError
77
+ end
78
+ end
79
+
80
+ context "when :format option contains short year with based on 1900" do
81
+ before(:each) do
82
+ @new_proc = lambda {
83
+ DateValidator.new("Birthday",
84
+ :format => "M/D/YY", :base_year => 1900,
85
+ :from => "1/25/80", :to => Date.new(2011, 1, 1))
86
+ }
87
+ end
88
+
89
+ it "should not raise error" do
90
+ @new_proc.should_not raise_error
91
+ end
92
+
93
+ it "#from should be 1980-01-25" do
94
+ @new_proc.call.from.should == Date.new(1980, 1, 25)
95
+ end
96
+
97
+ it "#to should be 2011-01-01" do
98
+ @new_proc.call.to.should == Date.new(2011, 1, 1)
99
+ end
100
+ end
101
+ end
102
+
103
+ context "with target expression and :from option with Date object" do
104
+ before(:each) do
105
+ @new_proc = lambda {
106
+ DateValidator.new("1", :from => Date.new(2011, 1, 1))
107
+ }
108
+ end
109
+
110
+ it "should not raise error" do
111
+ @new_proc.should_not raise_error
112
+ end
113
+
114
+ it "#from should be date object" do
115
+ @new_proc.call.from.should be_a Date
116
+ end
117
+ end
118
+
119
+ context "with target expression and :from option with String object" do
120
+ before(:each) do
121
+ @new_proc = lambda {
122
+ DateValidator.new("1", :from => "2011-01-01")
123
+ }
124
+ end
125
+
126
+ it "should not raise error" do
127
+ @new_proc.should_not raise_error
128
+ end
129
+
130
+ it "#from should be date object" do
131
+ @new_proc.call.from.should be_a Date
132
+ end
133
+
134
+ it "#from should be same date for string expression" do
135
+ @new_proc.call.from.should == Date.new(2011, 1, 1)
136
+ end
137
+ end
138
+
139
+ context "with target expression and :from option with invalid format date String object" do
140
+ before(:each) do
141
+ @new_proc = lambda {
142
+ DateValidator.new("1", :from => "2011-01-34")
143
+ }
144
+ end
145
+
146
+ it "should raise ArgumentError" do
147
+ @new_proc.should raise_error ArgumentError
148
+ end
149
+ end
150
+
151
+ context "with target expression and :to option with Date object" do
152
+ before(:each) do
153
+ @new_proc = lambda {
154
+ DateValidator.new("1", :to => Date.new(2011, 1, 1))
155
+ }
156
+ end
157
+
158
+ it "should not raise error" do
159
+ @new_proc.should_not raise_error
160
+ end
161
+
162
+ it "#to should be date object" do
163
+ @new_proc.call.to.should be_a Date
164
+ end
165
+ end
166
+
167
+ context "with target expression and :to option with String object" do
168
+ before(:each) do
169
+ @new_proc = lambda {
170
+ DateValidator.new("1", :to => "2011-01-01")
171
+ }
172
+ end
173
+
174
+ it "should not raise error" do
175
+ @new_proc.should_not raise_error
176
+ end
177
+
178
+ it "#to should be date object" do
179
+ @new_proc.call.to.should be_a Date
180
+ end
181
+
182
+ it "#to should be same date for string expression" do
183
+ @new_proc.call.to.should == Date.new(2011, 1, 1)
184
+ end
185
+ end
186
+
187
+ context "with target expression and :to option with invalid format date String object" do
188
+ before(:each) do
189
+ @new_proc = lambda {
190
+ DateValidator.new("1", :to => "2011-01-34")
191
+ }
192
+ end
193
+
194
+ it "should raise ArgumentError" do
195
+ @new_proc.should raise_error ArgumentError
196
+ end
197
+ end
198
+ end
199
+
200
+ describe DateValidator, "#valid?" do
201
+ context "with only target expression" do
202
+ before(:each) do
203
+ @validator = DateValidator.new("1")
204
+ end
205
+
206
+ context "invalid date expression" do
207
+ before(:each) do
208
+ Validator::Base.values = { "1" => "2011-34-42" }
209
+ end
210
+
211
+ it { @validator.should_not be_valid }
212
+ end
213
+
214
+ context "valid date expression" do
215
+ before(:each) do
216
+ Validator::Base.values = { "1" => "2011-04-02" }
217
+ end
218
+
219
+ it { @validator.should be_valid }
220
+ end
221
+ end
222
+
223
+ context "with target expression and :from option" do
224
+ before(:each) do
225
+ @validator = DateValidator.new("1", :from => "2011-04-01")
226
+ end
227
+
228
+ context "invalid date expression" do
229
+ before(:each) do
230
+ Validator::Base.values = { "1" => "2011-34-42" }
231
+ end
232
+
233
+ it { @validator.should_not be_valid }
234
+ end
235
+
236
+ context "invalid date by :from option" do
237
+ before(:each) do
238
+ Validator::Base.values = { "1" => "2011-03-31" }
239
+ end
240
+
241
+ it { @validator.should_not be_valid }
242
+ end
243
+
244
+ context "valid date by :from option" do
245
+ before(:each) do
246
+ Validator::Base.values = { "1" => "2011-04-01" }
247
+ end
248
+
249
+ it { @validator.should be_valid }
250
+ end
251
+ end
252
+
253
+ context "with target expression and :to option" do
254
+ before(:each) do
255
+ @validator = DateValidator.new("1", :to => "2011-04-01")
256
+ end
257
+
258
+ context "invalid date expression" do
259
+ before(:each) do
260
+ Validator::Base.values = { "1" => "2011-34-42" }
261
+ end
262
+
263
+ it { @validator.should_not be_valid }
264
+ end
265
+
266
+ context "invalid date by :to option" do
267
+ before(:each) do
268
+ Validator::Base.values = { "1" => "2011-04-02" }
269
+ end
270
+
271
+ it { @validator.should_not be_valid }
272
+ end
273
+
274
+ context "valid date by :to option" do
275
+ before(:each) do
276
+ Validator::Base.values = { "1" => "2011-04-01" }
277
+ end
278
+
279
+ it { @validator.should be_valid }
280
+ end
281
+ end
282
+
283
+ context "with target expression and :to and :from option" do
284
+ before(:each) do
285
+ @validator = DateValidator.new("1", :from => "2010-04-01", :to => "2011-03-31")
286
+ end
287
+
288
+ context "invalid date expression" do
289
+ before(:each) do
290
+ Validator::Base.values = { "1" => "2011-34-42" }
291
+ end
292
+
293
+ it { @validator.should_not be_valid }
294
+ end
295
+
296
+ context "invalid date by :from option" do
297
+ before(:each) do
298
+ Validator::Base.values = { "1" => "2010-03-31" }
299
+ end
300
+
301
+ it { @validator.should_not be_valid }
302
+ end
303
+
304
+ context "invalid date by :to option" do
305
+ before(:each) do
306
+ Validator::Base.values = { "1" => "2011-04-01" }
307
+ end
308
+
309
+ it { @validator.should_not be_valid }
310
+ end
311
+
312
+ context "valid date by :from and :to option" do
313
+ before(:each) do
314
+ Validator::Base.values = { "1" => "2010-05-31" }
315
+ end
316
+
317
+ it { @validator.should be_valid }
318
+ end
319
+ end
320
+
321
+ context "with target expression with :allow_blank => true" do
322
+ before(:each) do
323
+ @validator = DateValidator.new("1", :allow_blank => true)
324
+ end
325
+
326
+ context "invalid date expression" do
327
+ before(:each) do
328
+ Validator::Base.values = { "1" => "2011-34-42" }
329
+ end
330
+
331
+ it { @validator.should_not be_valid }
332
+ end
333
+
334
+ context "valid date expression" do
335
+ before(:each) do
336
+ Validator::Base.values = { "1" => "2011-04-02" }
337
+ end
338
+
339
+ it { @validator.should be_valid }
340
+ end
341
+
342
+ context "blank value" do
343
+ before(:each) do
344
+ Validator::Base.values = { "1" => "" }
345
+ end
346
+
347
+ it { @validator.should be_valid }
348
+ end
349
+ end
350
+ end
@@ -0,0 +1,158 @@
1
+ require "spec_helper"
2
+
3
+ # Anodator::Validator::FormatValidator
4
+ require "anodator/validator/format_validator"
5
+
6
+ describe Anodator::Validator::FormatValidator, ".new" do
7
+ context "with no parameters" do
8
+ it "should raise ArgumentError" do
9
+ lambda {
10
+ Anodator::Validator::FormatValidator.new
11
+ }.should raise_error ArgumentError
12
+ end
13
+ end
14
+
15
+ context "with only target parameter" do
16
+ before(:each) do
17
+ @validator_new_proc = lambda {
18
+ Anodator::Validator::FormatValidator.new("1")
19
+ }
20
+ end
21
+
22
+ it "should not raise error" do
23
+ @validator_new_proc.should_not raise_error ArgumentError
24
+ end
25
+ end
26
+
27
+ context "with target parameter and :format option" do
28
+ it "should not raise error" do
29
+ lambda {
30
+ Anodator::Validator::FormatValidator.new("1", :format => /^\d+$/)
31
+ }.should_not raise_error
32
+ end
33
+ end
34
+
35
+ context "with target parameter and :format option by string" do
36
+ it "should not raise error" do
37
+ lambda {
38
+ Anodator::Validator::FormatValidator.new("1", :format => '\d+')
39
+ }.should_not raise_error
40
+ end
41
+
42
+ it "should :format to regexp option" do
43
+ Anodator::Validator::FormatValidator.new("1", :format => '\d+').format.should == /\d+/
44
+ end
45
+ end
46
+ end
47
+
48
+ describe Anodator::Validator::FormatValidator, "#valid?" do
49
+ context "without :format option" do
50
+ before(:each) do
51
+ @validator =
52
+ Anodator::Validator::FormatValidator.new("1", :allow_blank => false)
53
+ end
54
+
55
+ it "should raise error" do
56
+ lambda {
57
+ @validator.valid?
58
+ }.should raise_error ConfigurationError
59
+ end
60
+ end
61
+
62
+ context "for digit string with no blank" do
63
+ before(:each) do
64
+ @validator =
65
+ Anodator::Validator::FormatValidator.new("1",
66
+ :format => /^\d+$/,
67
+ :allow_blank => false)
68
+ end
69
+
70
+ context "target value is blank" do
71
+ before(:each) do
72
+ Anodator::Validator::Base.values = { "1" => "" }
73
+ end
74
+
75
+ it { @validator.should_not be_valid }
76
+ end
77
+
78
+ context "target value is '1'" do
79
+ before(:each) do
80
+ Anodator::Validator::Base.values = { "1" => "1" }
81
+ end
82
+
83
+ it { @validator.should be_valid }
84
+ end
85
+
86
+ context "target value is 'some message'" do
87
+ before(:each) do
88
+ Anodator::Validator::Base.values = { "1" => "some message" }
89
+ end
90
+
91
+ it { @validator.should_not be_valid }
92
+ end
93
+ end
94
+
95
+ context "for digit string with allow blank" do
96
+ before(:each) do
97
+ @validator =
98
+ Anodator::Validator::FormatValidator.new("1",
99
+ :format => /^\d+$/,
100
+ :allow_blank => true)
101
+ end
102
+
103
+ context "target value is blank" do
104
+ before(:each) do
105
+ Anodator::Validator::Base.values = { "1" => "" }
106
+ end
107
+
108
+ it { @validator.should be_valid }
109
+ end
110
+
111
+ context "target value is '1'" do
112
+ before(:each) do
113
+ Anodator::Validator::Base.values = { "1" => "1" }
114
+ end
115
+
116
+ it { @validator.should be_valid }
117
+ end
118
+
119
+ context "target value is 'some message'" do
120
+ before(:each) do
121
+ Anodator::Validator::Base.values = { "1" => "some message" }
122
+ end
123
+
124
+ it { @validator.should_not be_valid }
125
+ end
126
+ end
127
+
128
+ context "for postal code with not allow blank" do
129
+ before(:each) do
130
+ @validator = Anodator::Validator::FormatValidator.new("postal_code",
131
+ :format => /^\d{3}-\d{4}$/)
132
+ end
133
+
134
+ context "target value is valid" do
135
+ before(:each) do
136
+ Anodator::Validator::Base.values = { "postal_code" => "123-1234" }
137
+ end
138
+
139
+ it { @validator.should be_valid }
140
+ end
141
+
142
+ context "target value is blank" do
143
+ before(:each) do
144
+ Anodator::Validator::Base.values = { "postal_code" => "" }
145
+ end
146
+
147
+ it { @validator.should_not be_valid }
148
+ end
149
+
150
+ context "target value is invalid" do
151
+ before(:each) do
152
+ Anodator::Validator::Base.values = { "postal_code" => "1234567" }
153
+ end
154
+
155
+ it { @validator.should_not be_valid }
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,77 @@
1
+ require "spec_helper"
2
+
3
+ # Anodator::Validator::InclusionValidator
4
+ require "anodator/validator/inclusion_validator"
5
+
6
+ include Anodator::Validator
7
+
8
+ describe InclusionValidator, ".new" do
9
+ context "with no parameters" do
10
+ it "should raise ArgumentError" do
11
+ lambda {
12
+ InclusionValidator.new
13
+ }.should raise_error ArgumentError
14
+ end
15
+ end
16
+
17
+ context "with only target parameter" do
18
+ it "should not raise error" do
19
+ lambda {
20
+ InclusionValidator.new("1")
21
+ }.should_not raise_error
22
+ end
23
+ end
24
+
25
+ context "with target expression and :in paramerter" do
26
+ before(:each) do
27
+ @new_proc = lambda {
28
+ InclusionValidator.new("1", :in => ["A", "B", "C"])
29
+ }
30
+ end
31
+
32
+ it "should not raise error" do
33
+ @new_proc.should_not raise_error
34
+ end
35
+
36
+ it ":in option must have parameter values" do
37
+ validator = @new_proc.call
38
+ validator.options[:in].should == ["A", "B", "C"]
39
+ end
40
+ end
41
+ end
42
+
43
+ describe InclusionValidator, "#valid?" do
44
+ context "with only target parameter" do
45
+ before(:each) do
46
+ @validator = InclusionValidator.new("1")
47
+ end
48
+
49
+ it "should raise error" do
50
+ lambda {
51
+ @validator.valid?
52
+ }.should raise_error ConfigurationError
53
+ end
54
+ end
55
+
56
+ context "with target expression and :in paramerter" do
57
+ before(:each) do
58
+ @validator = InclusionValidator.new("1", :in => ["A", "B", "C"])
59
+ end
60
+
61
+ context "values for valid" do
62
+ before(:each) do
63
+ Base.values = { "1" => "A" }
64
+ end
65
+
66
+ it { @validator.should be_valid }
67
+ end
68
+
69
+ context "values for invalid" do
70
+ before(:each) do
71
+ Base.values = { "1" => "D" }
72
+ end
73
+
74
+ it { @validator.should_not be_valid }
75
+ end
76
+ end
77
+ end