dry-validation 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,459 @@
1
+ RSpec.context 'Predicates: Included In' do
2
+
3
+ context "Array" do
4
+
5
+ context 'with required' do
6
+ subject(:schema) do
7
+ Dry::Validation.Schema do
8
+ required(:foo) { included_in?([1, 3, 5]) }
9
+ end
10
+ end
11
+
12
+ context 'with valid input' do
13
+ let(:input) { { foo: 3 } }
14
+
15
+ it 'is successful' do
16
+ expect(result).to be_successful
17
+ end
18
+ end
19
+
20
+ context 'with missing input' do
21
+ let(:input) { {} }
22
+
23
+ it 'is not successful' do
24
+ expect(result).to be_failing ['is missing', 'must be one of: 1, 3, 5']
25
+ end
26
+ end
27
+
28
+ context 'with nil input' do
29
+ let(:input) { { foo: nil } }
30
+
31
+ it 'is not successful' do
32
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
33
+ end
34
+ end
35
+
36
+ context 'with blank input' do
37
+ let(:input) { { foo: '' } }
38
+
39
+ it 'is not successful' do
40
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
41
+ end
42
+ end
43
+
44
+ context 'with invalid type' do
45
+ let(:input) { { foo: { a: 1 } } }
46
+
47
+ it 'is not successful' do
48
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
49
+ end
50
+ end
51
+
52
+ context 'with invalid input' do
53
+ let(:input) { { foo: 4 } }
54
+
55
+ it 'is not successful' do
56
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
57
+ end
58
+ end
59
+ end
60
+
61
+ context 'with optional' do
62
+ subject(:schema) do
63
+ Dry::Validation.Schema do
64
+ optional(:foo) { included_in?([1, 3, 5]) }
65
+ end
66
+ end
67
+
68
+ context 'with valid input' do
69
+ let(:input) { { foo: 3 } }
70
+
71
+ it 'is successful' do
72
+ expect(result).to be_successful
73
+ end
74
+ end
75
+
76
+ context 'with missing input' do
77
+ let(:input) { {} }
78
+
79
+ it 'is successful' do
80
+ expect(result).to be_successful
81
+ end
82
+ end
83
+
84
+ context 'with nil input' do
85
+ let(:input) { { foo: nil } }
86
+
87
+ it 'is not successful' do
88
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
89
+ end
90
+ end
91
+
92
+ context 'with blank input' do
93
+ let(:input) { { foo: '' } }
94
+
95
+ it 'is not successful' do
96
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
97
+ end
98
+ end
99
+
100
+ context 'with invalid type' do
101
+ let(:input) { { foo: { a: 1 } } }
102
+
103
+ it 'is not successful' do
104
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
105
+ end
106
+ end
107
+
108
+ context 'with invalid input' do
109
+ let(:input) { { foo: 4 } }
110
+
111
+ it 'is not successful' do
112
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
113
+ end
114
+ end
115
+ end
116
+
117
+ context 'as macro' do
118
+ context 'with required' do
119
+ context 'with value' do
120
+ subject(:schema) do
121
+ Dry::Validation.Schema do
122
+ required(:foo).value(included_in?: [1, 3, 5])
123
+ end
124
+ end
125
+
126
+ context 'with valid input' do
127
+ let(:input) { { foo: 3 } }
128
+
129
+ it 'is successful' do
130
+ expect(result).to be_successful
131
+ end
132
+ end
133
+
134
+ context 'with missing input' do
135
+ let(:input) { {} }
136
+
137
+ it 'is not successful' do
138
+ expect(result).to be_failing ['is missing', 'must be one of: 1, 3, 5']
139
+ end
140
+ end
141
+
142
+ context 'with nil input' do
143
+ let(:input) { { foo: nil } }
144
+
145
+ it 'is not successful' do
146
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
147
+ end
148
+ end
149
+
150
+ context 'with blank input' do
151
+ let(:input) { { foo: '' } }
152
+
153
+ it 'is not successful' do
154
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
155
+ end
156
+ end
157
+
158
+ context 'with invalid type' do
159
+ let(:input) { { foo: { a: 1 } } }
160
+
161
+ it 'is not successful' do
162
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
163
+ end
164
+ end
165
+
166
+ context 'with invalid input' do
167
+ let(:input) { { foo: 4 } }
168
+
169
+ it 'is not successful' do
170
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
171
+ end
172
+ end
173
+ end
174
+
175
+ context 'with filled' do
176
+ subject(:schema) do
177
+ Dry::Validation.Schema do
178
+ required(:foo).filled(included_in?: [1, 3, 5])
179
+ end
180
+ end
181
+
182
+ context 'with valid input' do
183
+ let(:input) { { foo: 3 } }
184
+
185
+ it 'is successful' do
186
+ expect(result).to be_successful
187
+ end
188
+ end
189
+
190
+ context 'with missing input' do
191
+ let(:input) { {} }
192
+
193
+ it 'is not successful' do
194
+ expect(result).to be_failing ['is missing', 'must be one of: 1, 3, 5']
195
+ end
196
+ end
197
+
198
+ context 'with nil input' do
199
+ let(:input) { { foo: nil } }
200
+
201
+ it 'is not successful' do
202
+ expect(result).to be_failing ['must be filled', 'must be one of: 1, 3, 5']
203
+ end
204
+ end
205
+
206
+ context 'with blank input' do
207
+ let(:input) { { foo: '' } }
208
+
209
+ it 'is not successful' do
210
+ expect(result).to be_failing ['must be filled', 'must be one of: 1, 3, 5']
211
+ end
212
+ end
213
+
214
+ context 'with invalid type' do
215
+ let(:input) { { foo: { a: 1 } } }
216
+
217
+ it 'is not successful' do
218
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
219
+ end
220
+ end
221
+
222
+ context 'with invalid input' do
223
+ let(:input) { { foo: 4 } }
224
+
225
+ it 'is not successful' do
226
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
227
+ end
228
+ end
229
+ end
230
+
231
+ context 'with maybe' do
232
+ subject(:schema) do
233
+ Dry::Validation.Schema do
234
+ required(:foo).maybe(included_in?: [1, 3, 5])
235
+ end
236
+ end
237
+
238
+ context 'with valid input' do
239
+ let(:input) { { foo: 3 } }
240
+
241
+ it 'is successful' do
242
+ expect(result).to be_successful
243
+ end
244
+ end
245
+
246
+ context 'with missing input' do
247
+ let(:input) { {} }
248
+
249
+ it 'is not successful' do
250
+ expect(result).to be_failing ['is missing', 'must be one of: 1, 3, 5']
251
+ end
252
+ end
253
+
254
+ context 'with nil input' do
255
+ let(:input) { { foo: nil } }
256
+
257
+ it 'is successful' do
258
+ expect(result).to be_successful
259
+ end
260
+ end
261
+
262
+ context 'with blank input' do
263
+ let(:input) { { foo: '' } }
264
+
265
+ it 'is not successful' do
266
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
267
+ end
268
+ end
269
+
270
+ context 'with invalid type' do
271
+ let(:input) { { foo: { a: 1 } } }
272
+
273
+ it 'is not successful' do
274
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
275
+ end
276
+ end
277
+
278
+ context 'with invalid input' do
279
+ let(:input) { { foo: 4 } }
280
+
281
+ it 'is not successful' do
282
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
283
+ end
284
+ end
285
+ end
286
+ end
287
+
288
+ context 'with optional' do
289
+ context 'with value' do
290
+ subject(:schema) do
291
+ Dry::Validation.Schema do
292
+ optional(:foo).value(included_in?: [1, 3, 5])
293
+ end
294
+ end
295
+
296
+ context 'with valid input' do
297
+ let(:input) { { foo: 3 } }
298
+
299
+ it 'is successful' do
300
+ expect(result).to be_successful
301
+ end
302
+ end
303
+
304
+ context 'with missing input' do
305
+ let(:input) { {} }
306
+
307
+ it 'is successful' do
308
+ expect(result).to be_successful
309
+ end
310
+ end
311
+
312
+ context 'with nil input' do
313
+ let(:input) { { foo: nil } }
314
+
315
+ it 'is not successful' do
316
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
317
+ end
318
+ end
319
+
320
+ context 'with blank input' do
321
+ let(:input) { { foo: '' } }
322
+
323
+ it 'is not successful' do
324
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
325
+ end
326
+ end
327
+
328
+ context 'with invalid type' do
329
+ let(:input) { { foo: { a: 1 } } }
330
+
331
+ it 'is not successful' do
332
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
333
+ end
334
+ end
335
+
336
+ context 'with invalid input' do
337
+ let(:input) { { foo: 4 } }
338
+
339
+ it 'is not successful' do
340
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
341
+ end
342
+ end
343
+ end
344
+
345
+ context 'with filled' do
346
+ subject(:schema) do
347
+ Dry::Validation.Schema do
348
+ optional(:foo).filled(included_in?: [1, 3, 5])
349
+ end
350
+ end
351
+
352
+ context 'with valid input' do
353
+ let(:input) { { foo: 3 } }
354
+
355
+ it 'is successful' do
356
+ expect(result).to be_successful
357
+ end
358
+ end
359
+
360
+ context 'with missing input' do
361
+ let(:input) { {} }
362
+
363
+ it 'is successful' do
364
+ expect(result).to be_successful
365
+ end
366
+ end
367
+
368
+ context 'with nil input' do
369
+ let(:input) { { foo: nil } }
370
+
371
+ it 'is not successful' do
372
+ expect(result).to be_failing ['must be filled', 'must be one of: 1, 3, 5']
373
+ end
374
+ end
375
+
376
+ context 'with blank input' do
377
+ let(:input) { { foo: '' } }
378
+
379
+ it 'is not successful' do
380
+ expect(result).to be_failing ['must be filled', 'must be one of: 1, 3, 5']
381
+ end
382
+ end
383
+
384
+ context 'with invalid type' do
385
+ let(:input) { { foo: { a: 1 } } }
386
+
387
+ it 'is not successful' do
388
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
389
+ end
390
+ end
391
+
392
+ context 'with invalid input' do
393
+ let(:input) { { foo: 4 } }
394
+
395
+ it 'is not successful' do
396
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
397
+ end
398
+ end
399
+ end
400
+
401
+ context 'with maybe' do
402
+ subject(:schema) do
403
+ Dry::Validation.Schema do
404
+ optional(:foo).maybe(included_in?: [1, 3, 5])
405
+ end
406
+ end
407
+
408
+ context 'with valid input' do
409
+ let(:input) { { foo: 3 } }
410
+
411
+ it 'is successful' do
412
+ expect(result).to be_successful
413
+ end
414
+ end
415
+
416
+ context 'with missing input' do
417
+ let(:input) { {} }
418
+
419
+ it 'is successful' do
420
+ expect(result).to be_successful
421
+ end
422
+ end
423
+
424
+ context 'with nil input' do
425
+ let(:input) { { foo: nil } }
426
+
427
+ it 'is successful' do
428
+ expect(result).to be_successful
429
+ end
430
+ end
431
+
432
+ context 'with blank input' do
433
+ let(:input) { { foo: '' } }
434
+
435
+ it 'is not successful' do
436
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
437
+ end
438
+ end
439
+
440
+ context 'with invalid type' do
441
+ let(:input) { { foo: { a: 1 } } }
442
+
443
+ it 'is not successful' do
444
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
445
+ end
446
+ end
447
+
448
+ context 'with invalid input' do
449
+ let(:input) { { foo: 4 } }
450
+
451
+ it 'is not successful' do
452
+ expect(result).to be_failing ['must be one of: 1, 3, 5']
453
+ end
454
+ end
455
+ end
456
+ end
457
+ end
458
+ end
459
+ end