dry-validation 0.9.2 → 0.9.3

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