1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
<?php
namespace Illuminate\Tests\Validation;
use Illuminate\Translation\ArrayLoader;
use Illuminate\Translation\Translator;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Validator;
use PHPUnit\Framework\TestCase;
include_once 'Enums.php';
class ValidationArrayRuleTest extends TestCase
{
public function testItCorrectlyFormatsAStringVersionOfTheRule()
{
$rule = Rule::array();
$this->assertSame('array', (string) $rule);
$rule = Rule::array('key_1', 'key_2', 'key_3');
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
$rule = Rule::array(['key_1', 'key_2', 'key_3']);
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
$rule = Rule::array(collect(['key_1', 'key_2', 'key_3']));
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
$rule = Rule::array([ArrayKeys::key_1, ArrayKeys::key_2, ArrayKeys::key_3]);
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
$rule = Rule::array([ArrayKeysBacked::key_1, ArrayKeysBacked::key_2, ArrayKeysBacked::key_3]);
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
}
public function testArrayValidation()
{
$trans = new Translator(new ArrayLoader, 'en');
$v = new Validator($trans, ['foo' => 'not an array'], ['foo' => Rule::array()]);
$this->assertTrue($v->fails());
$v = new Validator($trans, ['foo' => ['bar']], ['foo' => (string) Rule::array()]);
$this->assertTrue($v->passes());
$v = new Validator($trans, ['foo' => ['key_1' => 'bar', 'key_2' => '']], ['foo' => Rule::array(['key_1', 'key_2'])]);
$this->assertTrue($v->passes());
$v = new Validator($trans, ['foo' => ['key_1' => 'bar', 'key_2' => '']], ['foo' => ['required', Rule::array(['key_1', 'key_2'])]]);
$this->assertTrue($v->passes());
}
}
|