reform 2.3.2 → 2.3.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.
- 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
|
|