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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +4 -0
  3. data/lib/reform/form/dry/new_api.rb +2 -4
  4. data/lib/reform/version.rb +1 -1
  5. data/test/call_new_api.rb +6 -6
  6. data/test/call_old_api.rb +6 -6
  7. data/test/changed_test.rb +6 -6
  8. data/test/coercion_test.rb +13 -13
  9. data/test/composition_new_api.rb +24 -24
  10. data/test/composition_old_api.rb +24 -24
  11. data/test/contract_new_api.rb +8 -8
  12. data/test/contract_old_api.rb +8 -8
  13. data/test/default_test.rb +2 -2
  14. data/test/deserialize_test.rb +8 -8
  15. data/test/errors_new_api.rb +38 -38
  16. data/test/errors_old_api.rb +38 -38
  17. data/test/feature_test.rb +2 -2
  18. data/test/form_new_api.rb +3 -3
  19. data/test/form_old_api.rb +3 -3
  20. data/test/form_option_new_api.rb +1 -1
  21. data/test/form_option_old_api.rb +1 -1
  22. data/test/from_test.rb +10 -10
  23. data/test/inherit_new_api.rb +17 -17
  24. data/test/inherit_old_api.rb +17 -17
  25. data/test/module_new_api.rb +8 -8
  26. data/test/module_old_api.rb +9 -9
  27. data/test/parse_option_test.rb +7 -7
  28. data/test/parse_pipeline_test.rb +1 -1
  29. data/test/populate_new_api.rb +53 -53
  30. data/test/populate_old_api.rb +53 -53
  31. data/test/populator_skip_test.rb +2 -2
  32. data/test/prepopulator_test.rb +15 -15
  33. data/test/read_only_test.rb +2 -2
  34. data/test/readable_test.rb +3 -3
  35. data/test/reform_new_api.rb +19 -19
  36. data/test/reform_old_api.rb +19 -19
  37. data/test/save_new_api.rb +4 -4
  38. data/test/save_old_api.rb +4 -4
  39. data/test/setup_test.rb +9 -9
  40. data/test/skip_if_new_api.rb +12 -12
  41. data/test/skip_if_old_api.rb +15 -15
  42. data/test/skip_setter_and_getter_test.rb +6 -6
  43. data/test/validate_new_api.rb +62 -62
  44. data/test/validate_old_api.rb +64 -64
  45. data/test/validation/dry_validation_new_api.rb +115 -116
  46. data/test/validation/dry_validation_old_api.rb +105 -105
  47. data/test/validation/result_test.rb +14 -14
  48. data/test/virtual_test.rb +7 -7
  49. data/test/writeable_test.rb +8 -8
  50. 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?.must_equal false
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?.must_equal false
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?.must_equal false
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
- SessionSchema = Dry::Validation.Contract do
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 schema: SessionSchema
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
- MySchema = Dry::Schema.Params do
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 schema: MySchema do
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