detox 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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +19 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +40 -0
- data/Rakefile +11 -0
- data/detox.gemspec +27 -0
- data/gemfiles/activemodel_3_2_x.gemfile +5 -0
- data/gemfiles/activemodel_4_0_x.gemfile +5 -0
- data/lib/active_model/validations/absence.rb +19 -0
- data/lib/detox.rb +11 -0
- data/lib/detox/array_validity.rb +23 -0
- data/lib/detox/locales/en.yml +21 -0
- data/lib/detox/locales/ja.yml +21 -0
- data/lib/detox/validations/all.rb +41 -0
- data/lib/detox/validations/any.rb +57 -0
- data/lib/detox/validations/ordering.rb +34 -0
- data/lib/detox/validations/possession.rb +30 -0
- data/lib/detox/validity_broker.rb +55 -0
- data/lib/detox/version.rb +4 -0
- data/spec/detox/array_validity_spec.rb +214 -0
- data/spec/detox/validations/all_absence_spec.rb +147 -0
- data/spec/detox/validations/all_acceptance_spec.rb +352 -0
- data/spec/detox/validations/all_exclusion_spec.rb +137 -0
- data/spec/detox/validations/all_format_spec.rb +351 -0
- data/spec/detox/validations/all_inclusion_spec.rb +352 -0
- data/spec/detox/validations/all_length_spec.rb +388 -0
- data/spec/detox/validations/all_numericality_spec.rb +369 -0
- data/spec/detox/validations/all_presence_spec.rb +159 -0
- data/spec/detox/validations/any_absence_spec.rb +597 -0
- data/spec/detox/validations/any_acceptance_spec.rb +597 -0
- data/spec/detox/validations/any_exclusion_spec.rb +597 -0
- data/spec/detox/validations/any_format_spec.rb +597 -0
- data/spec/detox/validations/any_inclusion_spec.rb +597 -0
- data/spec/detox/validations/any_length_spec.rb +597 -0
- data/spec/detox/validations/any_numericality_spec.rb +609 -0
- data/spec/detox/validations/any_presence_spec.rb +596 -0
- data/spec/detox/validations/any_validator_check_validity_spec.rb +126 -0
- data/spec/detox/validations/ordering_spec.rb +452 -0
- data/spec/detox/validations/possession_spec.rb +263 -0
- data/spec/detox/validity_broker_spec.rb +126 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/test_class/all_absence_test.rb +14 -0
- data/spec/test_class/all_acceptance_test.rb +27 -0
- data/spec/test_class/all_exclusion_test.rb +15 -0
- data/spec/test_class/all_format_test.rb +26 -0
- data/spec/test_class/all_inclusion_test.rb +27 -0
- data/spec/test_class/all_length_test.rb +28 -0
- data/spec/test_class/all_numericality_test.rb +33 -0
- data/spec/test_class/all_presence_test.rb +14 -0
- data/spec/test_class/any_absence_test.rb +33 -0
- data/spec/test_class/any_acceptance_test.rb +34 -0
- data/spec/test_class/any_exclusion_test.rb +34 -0
- data/spec/test_class/any_format_test.rb +34 -0
- data/spec/test_class/any_inclusion_test.rb +33 -0
- data/spec/test_class/any_length_test.rb +33 -0
- data/spec/test_class/any_numericality_test.rb +35 -0
- data/spec/test_class/any_presence_test.rb +33 -0
- data/spec/test_class/array_validity_test.rb +6 -0
- data/spec/test_class/model_base.rb +11 -0
- data/spec/test_class/ordering_test.rb +33 -0
- data/spec/test_class/possession_test.rb +22 -0
- metadata +219 -0
@@ -0,0 +1,352 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "active_support/i18n"
|
4
|
+
require "test_class/all_inclusion_test"
|
5
|
+
|
6
|
+
describe Detox::Validations::AllInclusionValidator do
|
7
|
+
describe "validation result" do
|
8
|
+
context "when given no additional option" do# {{{
|
9
|
+
let(:test) { AllInclusionTest.new }
|
10
|
+
|
11
|
+
context "when apply to nil" do
|
12
|
+
it "is valid" do
|
13
|
+
test.values = nil
|
14
|
+
expect(test.valid?).to eq true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when apply to Array" do# {{{
|
19
|
+
context "when apply to [] (empty)" do
|
20
|
+
it "is valid" do
|
21
|
+
test.values = []
|
22
|
+
expect(test.valid?).to eq true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context "when apply to ['1', '2', '3'] (valid values)" do
|
26
|
+
it "is valid" do
|
27
|
+
test.values = ["1", "2", "3"]
|
28
|
+
expect(test.valid?).to eq true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
context "when apply to ['1', '2', '4'] (contains invalid values)" do
|
32
|
+
it "is invalid" do
|
33
|
+
test.values = ["1", "2", "4"]
|
34
|
+
expect(test.valid?).to eq false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
context "when apply to ['1', '2', nil] (contains nil)" do
|
38
|
+
it "is invalid" do
|
39
|
+
test.values = ['1', '2', nil]
|
40
|
+
expect(test.valid?).to eq false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
context "when apply to ['1', '2', ''] (contains empty)" do
|
44
|
+
it "is invalid" do
|
45
|
+
test.values = ['1', '2', '']
|
46
|
+
expect(test.valid?).to eq false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "when apply to ['1', '2', ' '] (contains blank)" do
|
50
|
+
it "is invalid" do
|
51
|
+
test.values = ['1', '2', ' ']
|
52
|
+
expect(test.valid?).to eq false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end# }}}
|
56
|
+
|
57
|
+
context "when apply to Hash" do# {{{
|
58
|
+
context "when apply to {} (empty)" do
|
59
|
+
it "is valid" do
|
60
|
+
test.values = {}
|
61
|
+
expect(test.valid?).to eq true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
context "when apply to { :a => '1', :b => '2', :c => '3' } (valid values)" do
|
65
|
+
it "is valid" do
|
66
|
+
test.values = { :a => '1', :b => '2', :c => '3' }
|
67
|
+
expect(test.valid?).to eq true
|
68
|
+
end
|
69
|
+
end
|
70
|
+
context "when apply to { :a => '1', :b => '2', :c => '4' } (contains invalid values)" do
|
71
|
+
it "is invalid" do
|
72
|
+
test.values = { :a => '1', :b => '2', :c => '4' }
|
73
|
+
expect(test.valid?).to eq false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
context "when apply to { :a => '1', :b => '2', :c => nil } (contains nil)" do
|
77
|
+
it "is invalid" do
|
78
|
+
test.values = { :a => '1', :b => '2', :c => nil }
|
79
|
+
expect(test.valid?).to eq false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
context "when apply to { :a => '1', :b => '2', :c => '' } (contains empty)" do
|
83
|
+
it "is invalid" do
|
84
|
+
test.values = { :a => '1', :b => '2', :c => '' }
|
85
|
+
expect(test.valid?).to eq false
|
86
|
+
end
|
87
|
+
end
|
88
|
+
context "when apply to { :a => '1', :b => '2', :c => ' ' } (contains blank)" do
|
89
|
+
it "is invalid" do
|
90
|
+
test.values = { :a => '1', :b => '2', :c => ' ' }
|
91
|
+
expect(test.valid?).to eq false
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end# }}}
|
95
|
+
end# }}}
|
96
|
+
|
97
|
+
context "when given ignore_nil_value option" do# {{{
|
98
|
+
let(:test) { AllInclusionTestWithIgnoreNilValueOption.new }
|
99
|
+
|
100
|
+
context "when apply to nil" do
|
101
|
+
it "is valid" do
|
102
|
+
test.values = nil
|
103
|
+
expect(test.valid?).to eq true
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when apply to Array" do# {{{
|
108
|
+
context "when apply to [] (empty)" do
|
109
|
+
it "is valid" do
|
110
|
+
test.values = []
|
111
|
+
expect(test.valid?).to eq true
|
112
|
+
end
|
113
|
+
end
|
114
|
+
context "when apply to ['1', '2', '3'] (valid values)" do
|
115
|
+
it "is valid" do
|
116
|
+
test.values = ["1", "2", "3"]
|
117
|
+
expect(test.valid?).to eq true
|
118
|
+
end
|
119
|
+
end
|
120
|
+
context "when apply to ['1', '2', '4'] (contains invalid values)" do
|
121
|
+
it "is invalid" do
|
122
|
+
test.values = ["1", "2", "4"]
|
123
|
+
expect(test.valid?).to eq false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
context "when apply to ['1', '2', nil] (contains nil)" do
|
127
|
+
it "is valid" do
|
128
|
+
test.values = ['1', '2', nil]
|
129
|
+
expect(test.valid?).to eq true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
context "when apply to ['1', '2', ''] (contains empty)" do
|
133
|
+
it "is invalid" do
|
134
|
+
test.values = ['1', '2', '']
|
135
|
+
expect(test.valid?).to eq false
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context "when apply to ['1', '2', ' '] (contains blank)" do
|
139
|
+
it "is invalid" do
|
140
|
+
test.values = ['1', '2', ' ']
|
141
|
+
expect(test.valid?).to eq false
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end# }}}
|
145
|
+
|
146
|
+
context "when apply to Hash" do# {{{
|
147
|
+
context "when apply to {} (empty)" do
|
148
|
+
it "is valid" do
|
149
|
+
test.values = {}
|
150
|
+
expect(test.valid?).to eq true
|
151
|
+
end
|
152
|
+
end
|
153
|
+
context "when apply to { :a => '1', :b => '2', :c => '3' } (valid values)" do
|
154
|
+
it "is valid" do
|
155
|
+
test.values = { :a => '1', :b => '2', :c => '3' }
|
156
|
+
expect(test.valid?).to eq true
|
157
|
+
end
|
158
|
+
end
|
159
|
+
context "when apply to { :a => '1', :b => '2', :c => '4' } (contains invalid values)" do
|
160
|
+
it "is invalid" do
|
161
|
+
test.values = { :a => '1', :b => '2', :c => '4' }
|
162
|
+
expect(test.valid?).to eq false
|
163
|
+
end
|
164
|
+
end
|
165
|
+
context "when apply to { :a => '1', :b => '2', :c => nil } (contains nil)" do
|
166
|
+
it "is valid" do
|
167
|
+
test.values = { :a => '1', :b => '2', :c => nil }
|
168
|
+
expect(test.valid?).to eq true
|
169
|
+
end
|
170
|
+
end
|
171
|
+
context "when apply to { :a => '1', :b => '2', :c => '' } (contains empty)" do
|
172
|
+
it "is invalid" do
|
173
|
+
test.values = { :a => '1', :b => '2', :c => '' }
|
174
|
+
expect(test.valid?).to eq false
|
175
|
+
end
|
176
|
+
end
|
177
|
+
context "when apply to { :a => '1', :b => '2', :c => ' ' } (contains blank)" do
|
178
|
+
it "is invalid" do
|
179
|
+
test.values = { :a => '1', :b => '2', :c => ' ' }
|
180
|
+
expect(test.valid?).to eq false
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end# }}}
|
184
|
+
end# }}}
|
185
|
+
|
186
|
+
context "when given ignore_blank_value option" do# {{{
|
187
|
+
let(:test) { AllInclusionTestWithIgnoreBlankValueOption.new }
|
188
|
+
|
189
|
+
context "when apply to nil" do
|
190
|
+
it "is valid" do
|
191
|
+
test.values = nil
|
192
|
+
expect(test.valid?).to eq true
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when apply to Array" do# {{{
|
197
|
+
context "when apply to [] (empty)" do
|
198
|
+
it "is valid" do
|
199
|
+
test.values = []
|
200
|
+
expect(test.valid?).to eq true
|
201
|
+
end
|
202
|
+
end
|
203
|
+
context "when apply to ['1', '2', '3'] (valid values)" do
|
204
|
+
it "is valid" do
|
205
|
+
test.values = ["1", "2", "3"]
|
206
|
+
expect(test.valid?).to eq true
|
207
|
+
end
|
208
|
+
end
|
209
|
+
context "when apply to ['1', '2', '4'] (contains invalid values)" do
|
210
|
+
it "is invalid" do
|
211
|
+
test.values = ["1", "2", "4"]
|
212
|
+
expect(test.valid?).to eq false
|
213
|
+
end
|
214
|
+
end
|
215
|
+
context "when apply to ['1', '2', nil] (contains nil)" do
|
216
|
+
it "is valid" do
|
217
|
+
test.values = ['1', '2', nil]
|
218
|
+
expect(test.valid?).to eq true
|
219
|
+
end
|
220
|
+
end
|
221
|
+
context "when apply to ['1', '2', ''] (contains empty)" do
|
222
|
+
it "is valid" do
|
223
|
+
test.values = ['1', '2', '']
|
224
|
+
expect(test.valid?).to eq true
|
225
|
+
end
|
226
|
+
end
|
227
|
+
context "when apply to ['1', '2', ' '] (contains blank)" do
|
228
|
+
it "is valid" do
|
229
|
+
test.values = ['1', '2', ' ']
|
230
|
+
expect(test.valid?).to eq true
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end# }}}
|
234
|
+
|
235
|
+
context "when apply to Hash" do# {{{
|
236
|
+
context "when apply to {} (empty)" do
|
237
|
+
it "is valid" do
|
238
|
+
test.values = {}
|
239
|
+
expect(test.valid?).to eq true
|
240
|
+
end
|
241
|
+
end
|
242
|
+
context "when apply to { :a => '1', :b => '2', :c => '3' } (valid values)" do
|
243
|
+
it "is valid" do
|
244
|
+
test.values = { :a => '1', :b => '2', :c => '3' }
|
245
|
+
expect(test.valid?).to eq true
|
246
|
+
end
|
247
|
+
end
|
248
|
+
context "when apply to { :a => '1', :b => '2', :c => '4' } (contains invalid values)" do
|
249
|
+
it "is invalid" do
|
250
|
+
test.values = { :a => '1', :b => '2', :c => '4' }
|
251
|
+
expect(test.valid?).to eq false
|
252
|
+
end
|
253
|
+
end
|
254
|
+
context "when apply to { :a => '1', :b => '2', :c => nil } (contains nil)" do
|
255
|
+
it "is valid" do
|
256
|
+
test.values = { :a => '1', :b => '2', :c => nil }
|
257
|
+
expect(test.valid?).to eq true
|
258
|
+
end
|
259
|
+
end
|
260
|
+
context "when apply to { :a => '1', :b => '2', :c => '' } (contains empty)" do
|
261
|
+
it "is valid" do
|
262
|
+
test.values = { :a => '1', :b => '2', :c => '' }
|
263
|
+
expect(test.valid?).to eq true
|
264
|
+
end
|
265
|
+
end
|
266
|
+
context "when apply to { :a => '1', :b => '2', :c => ' ' } (contains blank)" do
|
267
|
+
it "is valid" do
|
268
|
+
test.values = { :a => '1', :b => '2', :c => ' ' }
|
269
|
+
expect(test.valid?).to eq true
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end# }}}
|
273
|
+
end# }}}
|
274
|
+
end
|
275
|
+
|
276
|
+
describe "error message" do
|
277
|
+
context "when without message option" do# {{{
|
278
|
+
let(:test) { AllInclusionTest.new }
|
279
|
+
|
280
|
+
context "when valid" do
|
281
|
+
before do
|
282
|
+
test.values = ['1', '2', '3']
|
283
|
+
test.valid?
|
284
|
+
end
|
285
|
+
|
286
|
+
it "has no message" do
|
287
|
+
expect(test.errors.present?).to eq false
|
288
|
+
end
|
289
|
+
end
|
290
|
+
context "when invalid" do
|
291
|
+
before do
|
292
|
+
test.values = ['1', '2', '4']
|
293
|
+
test.valid?
|
294
|
+
end
|
295
|
+
|
296
|
+
it "has 1 error message" do
|
297
|
+
expect(test.errors.empty?).to eq false
|
298
|
+
expect(test.errors.size).to eq 1
|
299
|
+
end
|
300
|
+
it "error message is associated with values attribute" do
|
301
|
+
expect(test.errors.include?(:values)).to eq true
|
302
|
+
end
|
303
|
+
it %q{error messsage is "Values contains value that is not included in the list"} do
|
304
|
+
expect(test.errors.full_messages.first).to eq "Values contains value that is not included in the list"
|
305
|
+
end
|
306
|
+
end
|
307
|
+
context "when using i18n" do
|
308
|
+
before do
|
309
|
+
@base_locale = I18n.locale
|
310
|
+
I18n.locale = :ja
|
311
|
+
test.values = ['1', '2', '4']
|
312
|
+
test.valid?
|
313
|
+
end
|
314
|
+
after do
|
315
|
+
I18n.locale = @base_locale
|
316
|
+
end
|
317
|
+
it "error messsage is translated" do
|
318
|
+
expect(test.errors.full_messages.first).to eq "Values にはリストに含まれていない値が含まれています"
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end# }}}
|
322
|
+
|
323
|
+
context "when given message option" do# {{{
|
324
|
+
let(:test) { AllInclusionTestWithMessageOption.new }
|
325
|
+
|
326
|
+
context "when invalid" do
|
327
|
+
before do
|
328
|
+
test.values = ['1', '2', '4']
|
329
|
+
test.valid?
|
330
|
+
end
|
331
|
+
it "error messsage uses given message" do
|
332
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
333
|
+
end
|
334
|
+
end
|
335
|
+
context "when using i18n" do
|
336
|
+
before do
|
337
|
+
@base_locale = I18n.locale
|
338
|
+
I18n.locale = :ja
|
339
|
+
test.values = ['1', '2', '4']
|
340
|
+
test.valid?
|
341
|
+
end
|
342
|
+
after do
|
343
|
+
I18n.locale = @base_locale
|
344
|
+
end
|
345
|
+
it "error messsage is not translated" do
|
346
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end# }}}
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
@@ -0,0 +1,388 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "active_support/i18n"
|
4
|
+
require "test_class/all_length_test"
|
5
|
+
|
6
|
+
describe Detox::Validations::AllLengthValidator do
|
7
|
+
describe "validation result (3 <= length <= 6)" do
|
8
|
+
context "when given no additional option" do# {{{
|
9
|
+
let(:test) { AllLengthTest.new }
|
10
|
+
|
11
|
+
context "when apply to nil" do
|
12
|
+
it "is valid" do
|
13
|
+
test.values = nil
|
14
|
+
expect(test.valid?).to eq true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when apply to Array" do# {{{
|
19
|
+
context "when apply to [] (empty)" do
|
20
|
+
it "is valid" do
|
21
|
+
test.values = []
|
22
|
+
expect(test.valid?).to eq true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context "when apply to ['12345', '123', '123456'] (valid values)" do
|
26
|
+
it "is valid" do
|
27
|
+
test.values = ["12345", "123", "123456"]
|
28
|
+
expect(test.valid?).to eq true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
context "when apply to ['12345', '123', '1234567'] (contains longer value)" do
|
32
|
+
it "is invalid" do
|
33
|
+
test.values = ["12345", "123", "1234567"]
|
34
|
+
expect(test.valid?).to eq false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
context "when apply to ['12345', '123', '123'] (contains shorter value)" do
|
38
|
+
it "is invalid" do
|
39
|
+
test.values = ["12345", "123", "12"]
|
40
|
+
expect(test.valid?).to eq false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
context "when apply to ['12345', '123', nil] (contains nil)" do
|
44
|
+
it "is invalid" do
|
45
|
+
test.values = ["12345", "123", nil]
|
46
|
+
expect(test.valid?).to eq false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "when apply to ['12345', '123', ''] (contains empty)" do
|
50
|
+
it "is invalid" do
|
51
|
+
test.values = ["12345", "123", ""]
|
52
|
+
expect(test.valid?).to eq false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
context "when apply to ['12345', '123', ' '] (contains invalid length blank)" do
|
56
|
+
it "is invalid" do
|
57
|
+
test.values = ["12345", "123", " "]
|
58
|
+
expect(test.valid?).to eq false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end# }}}
|
62
|
+
|
63
|
+
context "when apply to Hash" do# {{{
|
64
|
+
context "when apply to {} (empty)" do
|
65
|
+
it "is valid" do
|
66
|
+
test.values = {}
|
67
|
+
expect(test.valid?).to eq true
|
68
|
+
end
|
69
|
+
end
|
70
|
+
context "when apply to { :a => '12345', :b => '123', :c => '123456' } (valid values)" do
|
71
|
+
it "is valid" do
|
72
|
+
test.values = { :a => '12345', :b => '123', :c => '123456' }
|
73
|
+
expect(test.valid?).to eq true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
context "when apply to { :a => '12345', :b => '123', :c => '1234567' } (contains longer value)" do
|
77
|
+
it "is invalid" do
|
78
|
+
test.values = { :a => '12345', :b => '123', :c => '1234567' }
|
79
|
+
expect(test.valid?).to eq false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
context "when apply to { :a => '12345', :b => '123', :c => '12' } (contains shorter value)" do
|
83
|
+
it "is invalid" do
|
84
|
+
test.values = { :a => '12345', :b => '123', :c => '12' }
|
85
|
+
expect(test.valid?).to eq false
|
86
|
+
end
|
87
|
+
end
|
88
|
+
context "when apply to { :a => '12345', :b => '123', :c => nil } (contains nil)" do
|
89
|
+
it "is invalid" do
|
90
|
+
test.values = { :a => '12345', :b => '123', :c => nil }
|
91
|
+
expect(test.valid?).to eq false
|
92
|
+
end
|
93
|
+
end
|
94
|
+
context "when apply to { :a => '12345', :b => '123', :c => '' } (contains empty)" do
|
95
|
+
it "is invalid" do
|
96
|
+
test.values = { :a => '12345', :b => '123', :c => '' }
|
97
|
+
expect(test.valid?).to eq false
|
98
|
+
end
|
99
|
+
end
|
100
|
+
context "when apply to { :a => '12345', :b => '123', :c => ' ' } (contains invalid length blank)" do
|
101
|
+
it "is invalid" do
|
102
|
+
test.values = { :a => '12345', :b => '123', :c => ' ' }
|
103
|
+
expect(test.valid?).to eq false
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end# }}}
|
107
|
+
end# }}}
|
108
|
+
|
109
|
+
context "when given ignore_nil_value option" do# {{{
|
110
|
+
let(:test) { AllLengthTestWithIgnoreNilValueOption.new }
|
111
|
+
|
112
|
+
context "when apply to nil" do
|
113
|
+
it "is valid" do
|
114
|
+
test.values = nil
|
115
|
+
expect(test.valid?).to eq true
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "when apply to Array" do# {{{
|
120
|
+
context "when apply to [] (empty)" do
|
121
|
+
it "is valid" do
|
122
|
+
test.values = []
|
123
|
+
expect(test.valid?).to eq true
|
124
|
+
end
|
125
|
+
end
|
126
|
+
context "when apply to ['12345', '123', '123456'] (valid values)" do
|
127
|
+
it "is valid" do
|
128
|
+
test.values = ["12345", "123", "123456"]
|
129
|
+
expect(test.valid?).to eq true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
context "when apply to ['12345', '123', '1234567'] (contains longer value)" do
|
133
|
+
it "is invalid" do
|
134
|
+
test.values = ["12345", "123", "1234567"]
|
135
|
+
expect(test.valid?).to eq false
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context "when apply to ['12345', '123', '12'] (contains shorter value)" do
|
139
|
+
it "is invalid" do
|
140
|
+
test.values = ["12345", "123", "12"]
|
141
|
+
expect(test.valid?).to eq false
|
142
|
+
end
|
143
|
+
end
|
144
|
+
context "when apply to ['12345', '123', nil] (contains nil)" do
|
145
|
+
it "is valid" do
|
146
|
+
test.values = ["12345", "123", nil]
|
147
|
+
expect(test.valid?).to eq true
|
148
|
+
end
|
149
|
+
end
|
150
|
+
context "when apply to ['12345', '123', ''] (contains empty)" do
|
151
|
+
it "is invalid" do
|
152
|
+
test.values = ["12345", "123", ""]
|
153
|
+
expect(test.valid?).to eq false
|
154
|
+
end
|
155
|
+
end
|
156
|
+
context "when apply to ['12345', '123', ' '] (contains invalid length blank)" do
|
157
|
+
it "is invalid" do
|
158
|
+
test.values = ["12345", "123", " "]
|
159
|
+
expect(test.valid?).to eq false
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end# }}}
|
163
|
+
|
164
|
+
context "when apply to Hash" do# {{{
|
165
|
+
context "when apply to {} (empty)" do
|
166
|
+
it "is valid" do
|
167
|
+
test.values = {}
|
168
|
+
expect(test.valid?).to eq true
|
169
|
+
end
|
170
|
+
end
|
171
|
+
context "when apply to { :a => '12345', :b => '123', :c => '123456' } (valid values)" do
|
172
|
+
it "is valid" do
|
173
|
+
test.values = { :a => '12345', :b => '123', :c => '123456' }
|
174
|
+
expect(test.valid?).to eq true
|
175
|
+
end
|
176
|
+
end
|
177
|
+
context "when apply to { :a => '12345', :b => '123', :c => '1234567' } (contains longer value)" do
|
178
|
+
it "is invalid" do
|
179
|
+
test.values = { :a => '12345', :b => '123', :c => '1234567' }
|
180
|
+
expect(test.valid?).to eq false
|
181
|
+
end
|
182
|
+
end
|
183
|
+
context "when apply to { :a => '12345', :b => '123', :c => '12' } (contains shorter value)" do
|
184
|
+
it "is invalid" do
|
185
|
+
test.values = { :a => '12345', :b => '123', :c => '12' }
|
186
|
+
expect(test.valid?).to eq false
|
187
|
+
end
|
188
|
+
end
|
189
|
+
context "when apply to { :a => '12345', :b => '123', :c => nil } (contains nil)" do
|
190
|
+
it "is valid" do
|
191
|
+
test.values = { :a => '12345', :b => '123', :c => nil }
|
192
|
+
expect(test.valid?).to eq true
|
193
|
+
end
|
194
|
+
end
|
195
|
+
context "when apply to { :a => '12345', :b => '123', :c => '' } (contains empty)" do
|
196
|
+
it "is invalid" do
|
197
|
+
test.values = { :a => '12345', :b => '123', :c => '' }
|
198
|
+
expect(test.valid?).to eq false
|
199
|
+
end
|
200
|
+
end
|
201
|
+
context "when apply to { :a => '12345', :b => '123', :c => ' ' } (contains invalid length blank)" do
|
202
|
+
it "is invalid" do
|
203
|
+
test.values = { :a => '12345', :b => '123', :c => ' ' }
|
204
|
+
expect(test.valid?).to eq false
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end# }}}
|
208
|
+
end# }}}
|
209
|
+
|
210
|
+
context "when given ignore_blank_value option" do# {{{
|
211
|
+
let(:test) { AllLengthTestWithIgnoreBlankValueOption.new }
|
212
|
+
|
213
|
+
context "when apply to nil" do
|
214
|
+
it "is valid" do
|
215
|
+
test.values = nil
|
216
|
+
expect(test.valid?).to eq true
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
context "when apply to Array" do# {{{
|
221
|
+
context "when apply to [] (empty)" do
|
222
|
+
it "is valid" do
|
223
|
+
test.values = []
|
224
|
+
expect(test.valid?).to eq true
|
225
|
+
end
|
226
|
+
end
|
227
|
+
context "when apply to ['12345', '123', '123456'] (valid values)" do
|
228
|
+
it "is valid" do
|
229
|
+
test.values = ["12345", "123", "123456"]
|
230
|
+
expect(test.valid?).to eq true
|
231
|
+
end
|
232
|
+
end
|
233
|
+
context "when apply to ['12345', '123', '1234567'] (contains longer length)" do
|
234
|
+
it "is invalid" do
|
235
|
+
test.values = ["12345", "123", "1234567"]
|
236
|
+
expect(test.valid?).to eq false
|
237
|
+
end
|
238
|
+
end
|
239
|
+
context "when apply to ['12345', '123', '12'] (contains shorter length)" do
|
240
|
+
it "is invalid" do
|
241
|
+
test.values = ["12345", "123", "12"]
|
242
|
+
expect(test.valid?).to eq false
|
243
|
+
end
|
244
|
+
end
|
245
|
+
context "when apply to ['12345', '123', nil] (contains nil)" do
|
246
|
+
it "is valid" do
|
247
|
+
test.values = ["12345", "123", nil]
|
248
|
+
expect(test.valid?).to eq true
|
249
|
+
end
|
250
|
+
end
|
251
|
+
context "when apply to ['12345', '123', ''] (contains empty)" do
|
252
|
+
it "is valid" do
|
253
|
+
test.values = ["12345", "123", ""]
|
254
|
+
expect(test.valid?).to eq true
|
255
|
+
end
|
256
|
+
end
|
257
|
+
context "when apply to ['12345', '123', ' '] (contains invalid length blank)" do
|
258
|
+
it "is valid" do
|
259
|
+
test.values = ["12345", "123", " "]
|
260
|
+
expect(test.valid?).to eq true
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end# }}}
|
264
|
+
|
265
|
+
context "when apply to Hash" do# {{{
|
266
|
+
context "when apply to {} (empty)" do
|
267
|
+
it "is valid" do
|
268
|
+
test.values = {}
|
269
|
+
expect(test.valid?).to eq true
|
270
|
+
end
|
271
|
+
end
|
272
|
+
context "when apply to { :a => '12345', :b => '123', :c => '123456' } (valid values)" do
|
273
|
+
it "is valid" do
|
274
|
+
test.values = { :a => '12345', :b => '123', :c => '123456' }
|
275
|
+
expect(test.valid?).to eq true
|
276
|
+
end
|
277
|
+
end
|
278
|
+
context "when apply to { :a => '12345', :b => '123', :c => '1234567' } (contains longer value)" do
|
279
|
+
it "is invalid" do
|
280
|
+
test.values = { :a => '12345', :b => '123', :c => '1234567' }
|
281
|
+
expect(test.valid?).to eq false
|
282
|
+
end
|
283
|
+
end
|
284
|
+
context "when apply to { :a => '12345', :b => '123', :c => '12' } (contains shorter value)" do
|
285
|
+
it "is invalid" do
|
286
|
+
test.values = { :a => '12345', :b => '123', :c => '12' }
|
287
|
+
expect(test.valid?).to eq false
|
288
|
+
end
|
289
|
+
end
|
290
|
+
context "when apply to { :a => '12345', :b => '123', :c => nil } (contains nil)" do
|
291
|
+
it "is valid" do
|
292
|
+
test.values = { :a => '12345', :b => '123', :c => nil }
|
293
|
+
expect(test.valid?).to eq true
|
294
|
+
end
|
295
|
+
end
|
296
|
+
context "when apply to { :a => '12345', :b => '123', :c => '' } (contains empty)" do
|
297
|
+
it "is valid" do
|
298
|
+
test.values = { :a => '12345', :b => '123', :c => '' }
|
299
|
+
expect(test.valid?).to eq true
|
300
|
+
end
|
301
|
+
end
|
302
|
+
context "when apply to { :a => '12345', :b => '123', :c => ' ' } (contains invalid length blank)" do
|
303
|
+
it "is valid" do
|
304
|
+
test.values = { :a => '12345', :b => '123', :c => ' ' }
|
305
|
+
expect(test.valid?).to eq true
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end# }}}
|
309
|
+
end# }}}
|
310
|
+
end
|
311
|
+
|
312
|
+
describe "error message" do
|
313
|
+
context "when witout message option" do# {{{
|
314
|
+
let(:test) { AllLengthTest.new }
|
315
|
+
|
316
|
+
context "when valid" do
|
317
|
+
before do
|
318
|
+
test.values = ['12345', '123', '123456']
|
319
|
+
test.valid?
|
320
|
+
end
|
321
|
+
|
322
|
+
it "has no message" do
|
323
|
+
expect(test.errors.present?).to eq false
|
324
|
+
end
|
325
|
+
end
|
326
|
+
context "when invalid" do
|
327
|
+
before do
|
328
|
+
test.values = ['12345', '123', '1234567']
|
329
|
+
test.valid?
|
330
|
+
end
|
331
|
+
|
332
|
+
it "has 1 error message" do
|
333
|
+
expect(test.errors.empty?).to eq false
|
334
|
+
expect(test.errors.size).to eq 1
|
335
|
+
end
|
336
|
+
it "error message is associated with values attribute" do
|
337
|
+
expect(test.errors.include?(:values)).to eq true
|
338
|
+
end
|
339
|
+
it "error messsage is 'Values contains invalid length value'" do
|
340
|
+
expect(test.errors.full_messages.first).to eq "Values contains invalid length value"
|
341
|
+
end
|
342
|
+
end
|
343
|
+
context "when using i18n" do
|
344
|
+
before do
|
345
|
+
@base_locale = I18n.locale
|
346
|
+
I18n.locale = :ja
|
347
|
+
test.values = ['12345', '123', '1234567']
|
348
|
+
test.valid?
|
349
|
+
end
|
350
|
+
after do
|
351
|
+
I18n.locale = @base_locale
|
352
|
+
end
|
353
|
+
it "error messsage is translated" do
|
354
|
+
expect(test.errors.full_messages.first).to eq "Values には長さが不正な値が含まれています"
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end# }}}
|
358
|
+
|
359
|
+
context "when given message option" do# {{{
|
360
|
+
let(:test) { AllLengthTestWithMessageOption.new }
|
361
|
+
|
362
|
+
context "when invalid" do
|
363
|
+
before do
|
364
|
+
test.values = ['12345', '123', '1234567']
|
365
|
+
test.valid?
|
366
|
+
end
|
367
|
+
it "error messsage uses given message" do
|
368
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
369
|
+
end
|
370
|
+
end
|
371
|
+
context "when using i18n" do
|
372
|
+
before do
|
373
|
+
@base_locale = I18n.locale
|
374
|
+
I18n.locale = :ja
|
375
|
+
test.values = ['12345', '123', '1234567']
|
376
|
+
test.valid?
|
377
|
+
end
|
378
|
+
after do
|
379
|
+
I18n.locale = @base_locale
|
380
|
+
end
|
381
|
+
it "error messsage is not translated" do
|
382
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
383
|
+
end
|
384
|
+
end
|
385
|
+
end# }}}
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|