@@ -585,6 +585,84 @@ public function testDisplayableAttributesAreReplacedInCustomReplacers()
585
585
new Validator ($ trans , ['firstname ' => 'Bob ' , 'lastname ' => 'Smith ' ], ['lastname ' => 'alliteration:firstname ' ]);
586
586
}
587
587
588
+ public function testIndexValuesAreReplaced ()
589
+ {
590
+ $ trans = $ this ->getIlluminateArrayTranslator ();
591
+
592
+ // $v = new Validator($trans, ['name' => ''], ['name' => 'required'], ['name.required' => 'Name :index is required.']);
593
+ // $this->assertFalse($v->passes());
594
+ // $this->assertSame('Name 0 is required.', $v->messages()->first('name'));
595
+
596
+ $ v = new Validator ($ trans , ['input ' => [['name ' => '' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :index is required. ' ]);
597
+ $ this ->assertFalse ($ v ->passes ());
598
+ $ this ->assertSame ('Name 0 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
599
+ $ v = new Validator ($ trans , ['input ' => [['name ' => '' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => ':Attribute :index is required. ' ]);
600
+ $ v ->setAttributeNames ([
601
+ 'input.*.name ' => 'name ' ,
602
+ ]);
603
+ $ this ->assertFalse ($ v ->passes ());
604
+ $ this ->assertSame ('Name 0 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
605
+
606
+ $ v = new Validator ($ trans , [
607
+ 'input ' => [
608
+ [
609
+ 'name ' => '' ,
610
+ 'attributes ' => [
611
+ 'foo ' ,
612
+ 1 ,
613
+ ],
614
+ ]
615
+ ]
616
+ ], ['input.*.attributes.* ' => 'string ' ], ['input.*.attributes.*.string ' => 'Attribute (:first-index, :first-position) (:second-index, :second-position) must be a string. ' ]);
617
+ $ this ->assertFalse ($ v ->passes ());
618
+ $ this ->assertSame ('Attribute (0, 1) (1, 2) must be a string. ' , $ v ->messages ()->first ('input.*.attributes.* ' ));
619
+
620
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => '' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :index is required. ' ]);
621
+ $ this ->assertFalse ($ v ->passes ());
622
+ $ this ->assertSame ('Name 1 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
623
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => '' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => ':Attribute :index is required. ' ]);
624
+ $ v ->setAttributeNames ([
625
+ 'input.*.name ' => 'name ' ,
626
+ ]);
627
+ $ this ->assertFalse ($ v ->passes ());
628
+ $ this ->assertSame ('Name 1 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
629
+
630
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :index is required. ' ]);
631
+ $ this ->assertTrue ($ v ->passes ());
632
+ }
633
+
634
+ public function testPositionValuesAreReplaced ()
635
+ {
636
+ $ trans = $ this ->getIlluminateArrayTranslator ();
637
+
638
+ // $v = new Validator($trans, ['name' => ''], ['name' => 'required'], ['name.required' => 'Name :position is required.']);
639
+ // $this->assertFalse($v->passes());
640
+ // $this->assertSame('Name 1 is required.', $v->messages()->first('name'));
641
+
642
+ $ v = new Validator ($ trans , ['input ' => [['name ' => '' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :position is required. ' ]);
643
+ $ this ->assertFalse ($ v ->passes ());
644
+ $ this ->assertSame ('Name 1 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
645
+ $ v = new Validator ($ trans , ['input ' => [['name ' => '' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => ':Attribute :position is required. ' ]);
646
+ $ v ->setAttributeNames ([
647
+ 'input.*.name ' => 'name ' ,
648
+ ]);
649
+ $ this ->assertFalse ($ v ->passes ());
650
+ $ this ->assertSame ('Name 1 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
651
+
652
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => '' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :position is required. ' ]);
653
+ $ this ->assertFalse ($ v ->passes ());
654
+ $ this ->assertSame ('Name 2 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
655
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => '' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => ':Attribute :position is required. ' ]);
656
+ $ v ->setAttributeNames ([
657
+ 'input.*.name ' => 'name ' ,
658
+ ]);
659
+ $ this ->assertFalse ($ v ->passes ());
660
+ $ this ->assertSame ('Name 2 is required. ' , $ v ->messages ()->first ('input.*.name ' ));
661
+
662
+ $ v = new Validator ($ trans , ['input ' => [['name ' => 'Bob ' ], ['name ' => 'Jane ' ]]], ['input.*.name ' => 'required ' ], ['input.*.name.required ' => 'Name :position is required. ' ]);
663
+ $ this ->assertTrue ($ v ->passes ());
664
+ }
665
+
588
666
public function testCustomValidationLinesAreRespected ()
589
667
{
590
668
$ trans = $ this ->getIlluminateArrayTranslator ();
0 commit comments