reform 2.3.2 → 2.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +4 -0
- data/lib/reform/form/dry/new_api.rb +2 -4
- data/lib/reform/version.rb +1 -1
- data/test/call_new_api.rb +6 -6
- data/test/call_old_api.rb +6 -6
- data/test/changed_test.rb +6 -6
- data/test/coercion_test.rb +13 -13
- data/test/composition_new_api.rb +24 -24
- data/test/composition_old_api.rb +24 -24
- data/test/contract_new_api.rb +8 -8
- data/test/contract_old_api.rb +8 -8
- data/test/default_test.rb +2 -2
- data/test/deserialize_test.rb +8 -8
- data/test/errors_new_api.rb +38 -38
- data/test/errors_old_api.rb +38 -38
- data/test/feature_test.rb +2 -2
- data/test/form_new_api.rb +3 -3
- data/test/form_old_api.rb +3 -3
- data/test/form_option_new_api.rb +1 -1
- data/test/form_option_old_api.rb +1 -1
- data/test/from_test.rb +10 -10
- data/test/inherit_new_api.rb +17 -17
- data/test/inherit_old_api.rb +17 -17
- data/test/module_new_api.rb +8 -8
- data/test/module_old_api.rb +9 -9
- data/test/parse_option_test.rb +7 -7
- data/test/parse_pipeline_test.rb +1 -1
- data/test/populate_new_api.rb +53 -53
- data/test/populate_old_api.rb +53 -53
- data/test/populator_skip_test.rb +2 -2
- data/test/prepopulator_test.rb +15 -15
- data/test/read_only_test.rb +2 -2
- data/test/readable_test.rb +3 -3
- data/test/reform_new_api.rb +19 -19
- data/test/reform_old_api.rb +19 -19
- data/test/save_new_api.rb +4 -4
- data/test/save_old_api.rb +4 -4
- data/test/setup_test.rb +9 -9
- data/test/skip_if_new_api.rb +12 -12
- data/test/skip_if_old_api.rb +15 -15
- data/test/skip_setter_and_getter_test.rb +6 -6
- data/test/validate_new_api.rb +62 -62
- data/test/validate_old_api.rb +64 -64
- data/test/validation/dry_validation_new_api.rb +115 -116
- data/test/validation/dry_validation_old_api.rb +105 -105
- data/test/validation/result_test.rb +14 -14
- data/test/virtual_test.rb +7 -7
- data/test/writeable_test.rb +8 -8
- metadata +2 -2
@@ -51,61 +51,61 @@ class DryValidationErrorsAPITest < Minitest::Spec
|
|
51
51
|
it "everything wrong" do
|
52
52
|
result = form.(title: nil, artist: {email: ""}, songs: [{title: "Clams have feelings too"}, {title: ""}])
|
53
53
|
|
54
|
-
result.success
|
54
|
+
_(result.success?).must_equal false
|
55
55
|
|
56
|
-
form.errors.messages.must_equal(title: ["must be filled", "size cannot be less than 2"], "artist.email": ["must be filled"], "artist.label.location": ["must be filled"], "songs.title": ["must be filled"])
|
57
|
-
form.artist.errors.messages.must_equal(email: ["must be filled"], "label.location": ["must be filled"])
|
58
|
-
form.artist.label.errors.messages.must_equal(location: ["must be filled"])
|
59
|
-
form.songs[0].errors.messages.must_equal({})
|
60
|
-
form.songs[1].errors.messages.must_equal(title: ["must be filled"])
|
56
|
+
_(form.errors.messages).must_equal(title: ["must be filled", "size cannot be less than 2"], "artist.email": ["must be filled"], "artist.label.location": ["must be filled"], "songs.title": ["must be filled"])
|
57
|
+
_(form.artist.errors.messages).must_equal(email: ["must be filled"], "label.location": ["must be filled"])
|
58
|
+
_(form.artist.label.errors.messages).must_equal(location: ["must be filled"])
|
59
|
+
_(form.songs[0].errors.messages).must_equal({})
|
60
|
+
_(form.songs[1].errors.messages).must_equal(title: ["must be filled"])
|
61
61
|
|
62
62
|
# #errors[]
|
63
|
-
form.errors[:nonsense].must_equal []
|
64
|
-
form.errors[:title].must_equal ["must be filled", "size cannot be less than 2"]
|
65
|
-
form.artist.errors[:email].must_equal ["must be filled"]
|
66
|
-
form.artist.label.errors[:location].must_equal ["must be filled"]
|
67
|
-
form.songs[0].errors[:title].must_equal []
|
68
|
-
form.songs[1].errors[:title].must_equal ["must be filled"]
|
63
|
+
_(form.errors[:nonsense]).must_equal []
|
64
|
+
_(form.errors[:title]).must_equal ["must be filled", "size cannot be less than 2"]
|
65
|
+
_(form.artist.errors[:email]).must_equal ["must be filled"]
|
66
|
+
_(form.artist.label.errors[:location]).must_equal ["must be filled"]
|
67
|
+
_(form.songs[0].errors[:title]).must_equal []
|
68
|
+
_(form.songs[1].errors[:title]).must_equal ["must be filled"]
|
69
69
|
|
70
70
|
# #to_result
|
71
|
-
form.to_result.errors.must_equal(title: ["must be filled"])
|
72
|
-
form.to_result.messages.must_equal(title: ["must be filled", "size cannot be less than 2"])
|
73
|
-
form.to_result.hints.must_equal(title: ["size cannot be less than 2"])
|
74
|
-
form.artist.to_result.errors.must_equal(email: ["must be filled"])
|
75
|
-
form.artist.to_result.messages.must_equal(email: ["must be filled"])
|
76
|
-
form.artist.to_result.hints.must_equal({})
|
77
|
-
form.artist.label.to_result.errors.must_equal(location: ["must be filled"])
|
78
|
-
form.artist.label.to_result.messages.must_equal(location: ["must be filled"])
|
79
|
-
form.artist.label.to_result.hints.must_equal({})
|
80
|
-
form.songs[0].to_result.errors.must_equal({})
|
81
|
-
form.songs[0].to_result.messages.must_equal({})
|
82
|
-
form.songs[0].to_result.hints.must_equal({})
|
83
|
-
form.songs[1].to_result.errors.must_equal(title: ["must be filled"])
|
84
|
-
form.songs[1].to_result.messages.must_equal(title: ["must be filled"])
|
85
|
-
form.songs[1].to_result.hints.must_equal({})
|
86
|
-
form.songs[1].to_result.errors(locale: :de).must_equal(title: ["muss abgefüllt sein"])
|
71
|
+
_(form.to_result.errors).must_equal(title: ["must be filled"])
|
72
|
+
_(form.to_result.messages).must_equal(title: ["must be filled", "size cannot be less than 2"])
|
73
|
+
_(form.to_result.hints).must_equal(title: ["size cannot be less than 2"])
|
74
|
+
_(form.artist.to_result.errors).must_equal(email: ["must be filled"])
|
75
|
+
_(form.artist.to_result.messages).must_equal(email: ["must be filled"])
|
76
|
+
_(form.artist.to_result.hints).must_equal({})
|
77
|
+
_(form.artist.label.to_result.errors).must_equal(location: ["must be filled"])
|
78
|
+
_(form.artist.label.to_result.messages).must_equal(location: ["must be filled"])
|
79
|
+
_(form.artist.label.to_result.hints).must_equal({})
|
80
|
+
_(form.songs[0].to_result.errors).must_equal({})
|
81
|
+
_(form.songs[0].to_result.messages).must_equal({})
|
82
|
+
_(form.songs[0].to_result.hints).must_equal({})
|
83
|
+
_(form.songs[1].to_result.errors).must_equal(title: ["must be filled"])
|
84
|
+
_(form.songs[1].to_result.messages).must_equal(title: ["must be filled"])
|
85
|
+
_(form.songs[1].to_result.hints).must_equal({})
|
86
|
+
_(form.songs[1].to_result.errors(locale: :de)).must_equal(title: ["muss abgefüllt sein"])
|
87
87
|
# seems like dry-v when calling Dry::Schema::Result#messages locale option is ignored
|
88
88
|
# started a topic in their forum https://discourse.dry-rb.org/t/dry-result-messages-ignore-locale-option/910
|
89
89
|
# form.songs[1].to_result.messages(locale: :de).must_equal(title: ["muss abgefüllt sein"])
|
90
|
-
form.songs[1].to_result.hints(locale: :de).must_equal({})
|
90
|
+
_(form.songs[1].to_result.hints(locale: :de)).must_equal({})
|
91
91
|
end
|
92
92
|
|
93
93
|
it "only nested property is invalid." do
|
94
94
|
result = form.(title: "Black Star", artist: {email: ""})
|
95
95
|
|
96
|
-
result.success
|
96
|
+
_(result.success?).must_equal false
|
97
97
|
|
98
98
|
# errors.messages
|
99
|
-
form.errors.messages.must_equal("artist.email": ["must be filled"], "artist.label.location": ["must be filled"], "songs.title": ["must be filled"])
|
100
|
-
form.artist.errors.messages.must_equal(email: ["must be filled"], "label.location": ["must be filled"])
|
101
|
-
form.artist.label.errors.messages.must_equal(location: ["must be filled"])
|
99
|
+
_(form.errors.messages).must_equal("artist.email": ["must be filled"], "artist.label.location": ["must be filled"], "songs.title": ["must be filled"])
|
100
|
+
_(form.artist.errors.messages).must_equal(email: ["must be filled"], "label.location": ["must be filled"])
|
101
|
+
_(form.artist.label.errors.messages).must_equal(location: ["must be filled"])
|
102
102
|
end
|
103
103
|
|
104
104
|
it "nested collection invalid" do
|
105
105
|
result = form.(title: "Black Star", artist: {email: "uhm", label: {location: "Hannover"}}, songs: [{title: ""}])
|
106
106
|
|
107
|
-
result.success
|
108
|
-
form.errors.messages.must_equal("songs.title": ["must be filled"])
|
107
|
+
_(result.success?).must_equal false
|
108
|
+
_(form.errors.messages).must_equal("songs.title": ["must be filled"])
|
109
109
|
end
|
110
110
|
|
111
111
|
#---
|
@@ -130,15 +130,15 @@ class DryValidationErrorsAPITest < Minitest::Spec
|
|
130
130
|
form = CollectionExternalValidationsForm.new(Album.new(nil, nil, [Song.new, Song.new]))
|
131
131
|
form.validate(songs: [{title: "Liar"}, {title: ""}])
|
132
132
|
|
133
|
-
form.errors.messages.must_equal("songs.title": ["must be filled"])
|
134
|
-
form.songs[0].errors.messages.must_equal({})
|
135
|
-
form.songs[1].errors.messages.must_equal(title: ["must be filled"])
|
133
|
+
_(form.errors.messages).must_equal("songs.title": ["must be filled"])
|
134
|
+
_(form.songs[0].errors.messages).must_equal({})
|
135
|
+
_(form.songs[1].errors.messages).must_equal(title: ["must be filled"])
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
139
|
class DryValidationExplicitSchemaTest < Minitest::Spec
|
140
140
|
Session = Struct.new(:name, :email)
|
141
|
-
|
141
|
+
SessionContract = Dry::Validation.Contract do
|
142
142
|
params do
|
143
143
|
required(:name).filled
|
144
144
|
required(:email).filled
|
@@ -151,20 +151,20 @@ class DryValidationExplicitSchemaTest < Minitest::Spec
|
|
151
151
|
property :name
|
152
152
|
property :email
|
153
153
|
|
154
|
-
validation
|
154
|
+
validation contract: SessionContract
|
155
155
|
end
|
156
156
|
|
157
157
|
let(:form) { SessionForm.new(Session.new) }
|
158
158
|
|
159
159
|
# valid.
|
160
160
|
it do
|
161
|
-
form.validate(name: "Helloween", email: "yep").must_equal true
|
162
|
-
form.errors.messages.inspect.must_equal "{}"
|
161
|
+
_(form.validate(name: "Helloween", email: "yep")).must_equal true
|
162
|
+
_(form.errors.messages.inspect).must_equal "{}"
|
163
163
|
end
|
164
164
|
|
165
165
|
it "invalid" do
|
166
|
-
form.validate(name: "", email: "yep").must_equal false
|
167
|
-
form.errors.messages.inspect.must_equal "{:name=>[\"must be filled\"]}"
|
166
|
+
_(form.validate(name: "", email: "yep")).must_equal false
|
167
|
+
_(form.errors.messages.inspect).must_equal "{:name=>[\"must be filled\"]}"
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
@@ -226,15 +226,15 @@ class DryValidationDefaultGroupTest < Minitest::Spec
|
|
226
226
|
end
|
227
227
|
|
228
228
|
it "invalid" do
|
229
|
-
form.validate(
|
229
|
+
_(form.validate(
|
230
230
|
username: "Helloween",
|
231
231
|
email: "yep",
|
232
232
|
active: "1",
|
233
233
|
starts_at: "01/01/2000 - 11:00",
|
234
234
|
color: "purple"
|
235
|
-
).must_equal false
|
236
|
-
form.active.must_equal true
|
237
|
-
form.errors.messages.inspect.must_equal "{:confirm_password=>[\"must be filled\"], :color=>[\"must be one of: red orange green\"]}"
|
235
|
+
)).must_equal false
|
236
|
+
_(form.active).must_equal true
|
237
|
+
_(form.errors.messages.inspect).must_equal "{:confirm_password=>[\"must be filled\"], :color=>[\"must be one of: red orange green\"]}"
|
238
238
|
end
|
239
239
|
end
|
240
240
|
|
@@ -275,36 +275,36 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
275
275
|
|
276
276
|
# valid.
|
277
277
|
it do
|
278
|
-
form.validate(username: "Helloween",
|
278
|
+
_(form.validate(username: "Helloween",
|
279
279
|
special_class: SomeClass.new(id: 15),
|
280
280
|
email: "yep",
|
281
281
|
password: "99",
|
282
|
-
confirm_password: "99").must_equal true
|
283
|
-
form.errors.messages.inspect.must_equal "{}"
|
282
|
+
confirm_password: "99")).must_equal true
|
283
|
+
_(form.errors.messages.inspect).must_equal "{}"
|
284
284
|
end
|
285
285
|
|
286
286
|
# invalid.
|
287
287
|
it do
|
288
|
-
form.validate({}).must_equal false
|
289
|
-
form.errors.messages.must_equal({username: ["must be filled"], email: ["must be filled"], special_class: ["must be filled", "must be ValidationGroupsTest::SomeClass"]})
|
288
|
+
_(form.validate({})).must_equal false
|
289
|
+
_(form.errors.messages).must_equal({username: ["must be filled"], email: ["must be filled"], special_class: ["must be filled", "must be ValidationGroupsTest::SomeClass"]})
|
290
290
|
end
|
291
291
|
|
292
292
|
# partially invalid.
|
293
293
|
# 2nd group fails.
|
294
294
|
it do
|
295
|
-
form.validate(username: "Helloween", email: "yo", confirm_password: "9", special_class: SomeClass.new(id: 15)).must_equal false
|
296
|
-
form.errors.messages.inspect.must_equal "{:email=>[\"size cannot be less than 3\"], :confirm_password=>[\"size cannot be less than 2\"]}"
|
295
|
+
_(form.validate(username: "Helloween", email: "yo", confirm_password: "9", special_class: SomeClass.new(id: 15))).must_equal false
|
296
|
+
_(form.errors.messages.inspect).must_equal "{:email=>[\"size cannot be less than 3\"], :confirm_password=>[\"size cannot be less than 2\"]}"
|
297
297
|
end
|
298
298
|
# 3rd group fails.
|
299
299
|
it do
|
300
|
-
form.validate(username: "Helloween", email: "yo!", confirm_password: "9", special_class: SomeClass.new(id: 15)).must_equal false
|
301
|
-
form.errors.messages.inspect
|
300
|
+
_(form.validate(username: "Helloween", email: "yo!", confirm_password: "9", special_class: SomeClass.new(id: 15))).must_equal false
|
301
|
+
_(form.errors.messages.inspect)
|
302
302
|
.must_equal "{:confirm_password=>[\"size cannot be less than 2\"], :password=>[\"must be filled\", \"size cannot be less than 2\"]}"
|
303
303
|
end
|
304
304
|
# 4th group with after: fails.
|
305
305
|
it do
|
306
|
-
form.validate(username: "Helloween", email: "yo!", password: "1", confirm_password: "9", special_class: SomeClass.new(id: 15)).must_equal false
|
307
|
-
form.errors.messages.inspect.must_equal "{:confirm_password=>[\"size cannot be less than 2\"], :password=>[\"size cannot be less than 2\"]}"
|
306
|
+
_(form.validate(username: "Helloween", email: "yo!", password: "1", confirm_password: "9", special_class: SomeClass.new(id: 15))).must_equal false
|
307
|
+
_(form.errors.messages.inspect).must_equal "{:confirm_password=>[\"size cannot be less than 2\"], :password=>[\"size cannot be less than 2\"]}"
|
308
308
|
end
|
309
309
|
end
|
310
310
|
|
@@ -329,24 +329,23 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
329
329
|
|
330
330
|
# valid.
|
331
331
|
it do
|
332
|
-
form.validate(username: "Nick").must_equal true
|
333
|
-
form.errors.messages.inspect.must_equal "{}"
|
332
|
+
_(form.validate(username: "Nick")).must_equal true
|
333
|
+
_(form.errors.messages.inspect).must_equal "{}"
|
334
334
|
end
|
335
335
|
|
336
336
|
# invalid.
|
337
337
|
it do
|
338
|
-
form.validate(username: "Fred").must_equal false
|
339
|
-
form.errors.messages.inspect.must_equal "{:username=>[\"must be equal to Nick\"]}"
|
338
|
+
_(form.validate(username: "Fred")).must_equal false
|
339
|
+
_(form.errors.messages.inspect).must_equal "{:username=>[\"must be equal to Nick\"]}"
|
340
340
|
end
|
341
341
|
end
|
342
342
|
end
|
343
343
|
|
344
344
|
#---
|
345
|
-
#- validation( schema: MySchema )
|
346
345
|
describe "with custom schema" do
|
347
346
|
Session2 = Struct.new(:username, :email, :password)
|
348
347
|
|
349
|
-
|
348
|
+
MyContract = Dry::Schema.Params do
|
350
349
|
config.messages.load_paths << "test/fixtures/dry_error_messages.yml"
|
351
350
|
|
352
351
|
required(:password).filled(min_size?: 6)
|
@@ -357,7 +356,7 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
357
356
|
property :email
|
358
357
|
property :password
|
359
358
|
|
360
|
-
validation
|
359
|
+
validation contract: MyContract do
|
361
360
|
params do
|
362
361
|
required(:username).filled
|
363
362
|
required(:email).filled
|
@@ -374,21 +373,21 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
374
373
|
# valid.
|
375
374
|
it do
|
376
375
|
skip "waiting dry-v to add this as feature https://github.com/dry-rb/dry-schema/issues/33"
|
377
|
-
form.validate(username: "Helloween", email: "yep", password: "extrasafe").must_equal true
|
378
|
-
form.errors.messages.inspect.must_equal "{}"
|
376
|
+
_(form.validate(username: "Helloween", email: "yep", password: "extrasafe")).must_equal true
|
377
|
+
_(form.errors.messages.inspect).must_equal "{}"
|
379
378
|
end
|
380
379
|
|
381
380
|
# invalid.
|
382
381
|
it do
|
383
382
|
skip "waiting dry-v to add this as feature https://github.com/dry-rb/dry-schema/issues/33"
|
384
|
-
form.validate({}).must_equal false
|
385
|
-
form.errors.messages.must_equal(password: ["must be filled", "size cannot be less than 6"], username: ["must be filled"], email: ["must be filled", "you're a bad person"])
|
383
|
+
_(form.validate({})).must_equal false
|
384
|
+
_(form.errors.messages).must_equal(password: ["must be filled", "size cannot be less than 6"], username: ["must be filled"], email: ["must be filled", "you're a bad person"])
|
386
385
|
end
|
387
386
|
|
388
387
|
it do
|
389
388
|
skip "waiting dry-v to add this as feature https://github.com/dry-rb/dry-schema/issues/33"
|
390
|
-
form.validate(email: 1).must_equal false
|
391
|
-
form.errors.messages.inspect.must_equal "{:password=>[\"must be filled\", \"size cannot be less than 6\"], :username=>[\"must be filled\"], :email=>[\"you're a bad person\"]}"
|
389
|
+
_(form.validate(email: 1)).must_equal false
|
390
|
+
_(form.errors.messages.inspect).must_equal "{:password=>[\"must be filled\", \"size cannot be less than 6\"], :username=>[\"must be filled\"], :email=>[\"you're a bad person\"]}"
|
392
391
|
end
|
393
392
|
end
|
394
393
|
|
@@ -465,23 +464,23 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
465
464
|
"producers" => [{"name" => ""}, {"name" => "something lovely"}]
|
466
465
|
)
|
467
466
|
|
468
|
-
result.must_equal false
|
467
|
+
_(result).must_equal false
|
469
468
|
# from nested validation
|
470
|
-
form.errors.messages.must_equal(title: ["you're a bad person"], "hit.title": ["must be filled"], "songs.title": ["must be filled"], "producers.name": ["must be filled"], "band.name": ["must be filled"], "band.label.location": ["must be filled"])
|
469
|
+
_(form.errors.messages).must_equal(title: ["you're a bad person"], "hit.title": ["must be filled"], "songs.title": ["must be filled"], "producers.name": ["must be filled"], "band.name": ["must be filled"], "band.label.location": ["must be filled"])
|
471
470
|
|
472
471
|
# songs have their own validation.
|
473
|
-
form.songs[0].errors.messages.must_equal(title: ["must be filled"])
|
472
|
+
_(form.songs[0].errors.messages).must_equal(title: ["must be filled"])
|
474
473
|
# hit got its own validation group.
|
475
|
-
form.hit.errors.messages.must_equal(title: ["must be filled"])
|
474
|
+
_(form.hit.errors.messages).must_equal(title: ["must be filled"])
|
476
475
|
|
477
|
-
form.band.label.errors.messages.must_equal(location: ["must be filled"])
|
478
|
-
form.band.errors.messages.must_equal(name: ["must be filled"], "label.location": ["must be filled"])
|
479
|
-
form.producers[0].errors.messages.must_equal(name: ["must be filled"])
|
476
|
+
_(form.band.label.errors.messages).must_equal(location: ["must be filled"])
|
477
|
+
_(form.band.errors.messages).must_equal(name: ["must be filled"], "label.location": ["must be filled"])
|
478
|
+
_(form.producers[0].errors.messages).must_equal(name: ["must be filled"])
|
480
479
|
|
481
480
|
# TODO: use the same form structure as the top one and do the same test against messages, errors and hints.
|
482
|
-
form.producers[0].to_result.errors.must_equal(name: ["must be filled"])
|
483
|
-
form.producers[0].to_result.messages.must_equal(name: ["must be filled"])
|
484
|
-
form.producers[0].to_result.hints.must_equal({})
|
481
|
+
_(form.producers[0].to_result.errors).must_equal(name: ["must be filled"])
|
482
|
+
_(form.producers[0].to_result.messages).must_equal(name: ["must be filled"])
|
483
|
+
_(form.producers[0].to_result.hints).must_equal({})
|
485
484
|
end
|
486
485
|
|
487
486
|
# FIXME: fix the "must be filled error"
|
@@ -494,11 +493,11 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
494
493
|
"producers" => [{"name" => ""}, {"name" => ""}, {"name" => "something lovely"}]
|
495
494
|
)
|
496
495
|
|
497
|
-
result.must_equal false
|
498
|
-
form.band.errors.full_messages.must_equal ["Name must be filled", "Label Location must be filled"]
|
499
|
-
form.band.label.errors.full_messages.must_equal ["Location must be filled"]
|
500
|
-
form.producers.first.errors.full_messages.must_equal ["Name must be filled"]
|
501
|
-
form.errors.full_messages.must_equal ["Title must be filled", "Hit Title must be filled", "Songs Title must be filled", "Producers Name must be filled", "Band Name must be filled", "Band Label Location must be filled"]
|
496
|
+
_(result).must_equal false
|
497
|
+
_(form.band.errors.full_messages).must_equal ["Name must be filled", "Label Location must be filled"]
|
498
|
+
_(form.band.label.errors.full_messages).must_equal ["Location must be filled"]
|
499
|
+
_(form.producers.first.errors.full_messages).must_equal ["Name must be filled"]
|
500
|
+
_(form.errors.full_messages).must_equal ["Title must be filled", "Hit Title must be filled", "Songs Title must be filled", "Producers Name must be filled", "Band Name must be filled", "Band Label Location must be filled"]
|
502
501
|
end
|
503
502
|
|
504
503
|
describe "only 1 nested validation" do
|
@@ -537,14 +536,14 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
537
536
|
"producers" => [{"name" => ""}, {"name" => ""}, {"name" => "something lovely"}]
|
538
537
|
)
|
539
538
|
|
540
|
-
form.to_result.errors.must_equal(title: ["must be filled"])
|
541
|
-
form.band.to_result.errors.must_equal(name: ["must be filled"])
|
542
|
-
form.band.label.to_result.errors.must_equal(location: ["must be filled"])
|
539
|
+
_(form.to_result.errors).must_equal(title: ["must be filled"])
|
540
|
+
_(form.band.to_result.errors).must_equal(name: ["must be filled"])
|
541
|
+
_(form.band.label.to_result.errors).must_equal(location: ["must be filled"])
|
543
542
|
|
544
543
|
# with locale: "de"
|
545
|
-
form.to_result.errors(locale: :de).must_equal(title: ["muss abgefüllt sein"])
|
546
|
-
form.band.to_result.errors(locale: :de).must_equal(name: ["muss abgefüllt sein"])
|
547
|
-
form.band.label.to_result.errors(locale: :de).must_equal(location: ["muss abgefüllt sein"])
|
544
|
+
_(form.to_result.errors(locale: :de)).must_equal(title: ["muss abgefüllt sein"])
|
545
|
+
_(form.band.to_result.errors(locale: :de)).must_equal(name: ["muss abgefüllt sein"])
|
546
|
+
_(form.band.label.to_result.errors(locale: :de)).must_equal(location: ["muss abgefüllt sein"])
|
548
547
|
end
|
549
548
|
end
|
550
549
|
end
|
@@ -605,14 +604,14 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
605
604
|
# valid.
|
606
605
|
it do
|
607
606
|
skip "waiting dry-v to add this as feature https://github.com/dry-rb/dry-schema/issues/33"
|
608
|
-
form.validate(email: 9).must_equal true
|
607
|
+
_(form.validate(email: 9)).must_equal true
|
609
608
|
end
|
610
609
|
|
611
610
|
# invalid.
|
612
611
|
it do
|
613
612
|
skip "waiting dry-v to add this as feature https://github.com/dry-rb/dry-schema/issues/33"
|
614
|
-
form.validate({}).must_equal false
|
615
|
-
form.errors.messages.must_equal email: ["must be filled"], full_name: ["must be filled"]
|
613
|
+
_(form.validate({})).must_equal false
|
614
|
+
_(form.errors.messages).must_equal email: ["must be filled"], full_name: ["must be filled"]
|
616
615
|
end
|
617
616
|
end
|
618
617
|
|
@@ -641,13 +640,13 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
641
640
|
|
642
641
|
# valid.
|
643
642
|
it do
|
644
|
-
form.validate(username: "Strung Out", email: 9).must_equal true
|
643
|
+
_(form.validate(username: "Strung Out", email: 9)).must_equal true
|
645
644
|
end
|
646
645
|
|
647
646
|
# invalid.
|
648
647
|
it do
|
649
|
-
form.validate(email: 9).must_equal false
|
650
|
-
form.errors.messages.inspect.must_equal "{:username=>[\"must be filled\"]}"
|
648
|
+
_(form.validate(email: 9)).must_equal false
|
649
|
+
_(form.errors.messages.inspect).must_equal "{:username=>[\"must be filled\"]}"
|
651
650
|
end
|
652
651
|
end
|
653
652
|
|
@@ -671,8 +670,8 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
671
670
|
let(:form) { OrderForm.new(order.new(company.new)) }
|
672
671
|
|
673
672
|
it "has company error" do
|
674
|
-
form.validate(delivery_address: {company: "not int"}).must_equal false
|
675
|
-
form.errors.messages.must_equal(:"delivery_address.company" => ["must be an integer"])
|
673
|
+
_(form.validate(delivery_address: {company: "not int"})).must_equal false
|
674
|
+
_(form.errors.messages).must_equal(:"delivery_address.company" => ["must be an integer"])
|
676
675
|
end
|
677
676
|
end
|
678
677
|
|
@@ -694,8 +693,8 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
694
693
|
let(:form) { OrderFormWithForm.new(order.new(company.new)) }
|
695
694
|
|
696
695
|
it "has company error" do
|
697
|
-
form.validate(delivery_address: {company: "not int"}).must_equal false
|
698
|
-
form.errors.messages.must_equal(:"delivery_address.company" => ["must be an integer"])
|
696
|
+
_(form.validate(delivery_address: {company: "not int"})).must_equal false
|
697
|
+
_(form.errors.messages).must_equal(:"delivery_address.company" => ["must be an integer"])
|
699
698
|
end
|
700
699
|
end
|
701
700
|
|
@@ -741,17 +740,17 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
741
740
|
|
742
741
|
it "validates fails and shows the correct errors" do
|
743
742
|
form = AlbumForm.new(Album.new(nil, [], nil))
|
744
|
-
form.validate(
|
743
|
+
_(form.validate(
|
745
744
|
"songs" => [
|
746
745
|
{"title" => "One", "enabled" => false},
|
747
746
|
{"title" => nil, "enabled" => false},
|
748
747
|
{"title" => "Three", "enabled" => false}
|
749
748
|
],
|
750
749
|
"artist" => {"last_name" => nil}
|
751
|
-
).must_equal false
|
752
|
-
form.songs.size.must_equal 3
|
750
|
+
)).must_equal false
|
751
|
+
_(form.songs.size).must_equal 3
|
753
752
|
|
754
|
-
form.errors.messages.must_equal(
|
753
|
+
_(form.errors.messages).must_equal(
|
755
754
|
:songs => ["must have at least one enabled song"],
|
756
755
|
:artist => ["must have last name"],
|
757
756
|
:"songs.title" => ["must be filled"]
|
@@ -785,26 +784,26 @@ class ValidationGroupsTest < MiniTest::Spec
|
|
785
784
|
it "using params" do
|
786
785
|
model = Foo.new
|
787
786
|
form = ParamsForm.new(model)
|
788
|
-
form.validate(age: "99").must_equal true
|
787
|
+
_(form.validate(age: "99")).must_equal true
|
789
788
|
form.sync
|
790
|
-
model.age.must_equal "99"
|
789
|
+
_(model.age).must_equal "99"
|
791
790
|
|
792
791
|
form = ParamsForm.new(Foo.new)
|
793
|
-
form.validate(age: "1000").must_equal false
|
794
|
-
form.errors.messages.must_equal age: ["value exceeded"]
|
792
|
+
_(form.validate(age: "1000")).must_equal false
|
793
|
+
_(form.errors.messages).must_equal age: ["value exceeded"]
|
795
794
|
end
|
796
795
|
|
797
796
|
it "using schema" do
|
798
797
|
model = Foo.new
|
799
798
|
form = SchemaForm.new(model)
|
800
|
-
form.validate(age: "99").must_equal false
|
801
|
-
form.validate(age: 99).must_equal true
|
799
|
+
_(form.validate(age: "99")).must_equal false
|
800
|
+
_(form.validate(age: 99)).must_equal true
|
802
801
|
form.sync
|
803
|
-
model.age.must_equal 99
|
802
|
+
_(model.age).must_equal 99
|
804
803
|
|
805
804
|
form = SchemaForm.new(Foo.new)
|
806
|
-
form.validate(age: 1000).must_equal false
|
807
|
-
form.errors.messages.must_equal age: ["value exceeded"]
|
805
|
+
_(form.validate(age: 1000)).must_equal false
|
806
|
+
_(form.errors.messages).must_equal age: ["value exceeded"]
|
808
807
|
end
|
809
808
|
end
|
810
809
|
|