anodator 0.0.1

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