Skip to content

Commit d141865

Browse files
mrvipchiencuong.tt
andauthored
update testcase rule is a part of the list (#54387)
Co-authored-by: cuong.tt <[email protected]>
1 parent 2d10f2a commit d141865

9 files changed

+183
-0
lines changed

tests/Validation/ValidationArrayRuleTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
namespace Illuminate\Tests\Validation;
44

5+
use Illuminate\Translation\ArrayLoader;
6+
use Illuminate\Translation\Translator;
57
use Illuminate\Validation\Rule;
8+
use Illuminate\Validation\Validator;
69
use PHPUnit\Framework\TestCase;
710

811
include_once 'Enums.php';
@@ -35,4 +38,21 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
3538

3639
$this->assertSame('array:key_1,key_2,key_3', (string) $rule);
3740
}
41+
42+
public function testArrayValidation()
43+
{
44+
$trans = new Translator(new ArrayLoader, 'en');
45+
46+
$v = new Validator($trans, ['foo' => 'not an array'], ['foo' => Rule::array()]);
47+
$this->assertTrue($v->fails());
48+
49+
$v = new Validator($trans, ['foo' => ['bar']], ['foo' => (string) Rule::array()]);
50+
$this->assertTrue($v->passes());
51+
52+
$v = new Validator($trans, ['foo' => ['key_1' => 'bar', 'key_2' => '']], ['foo' => Rule::array(['key_1', 'key_2'])]);
53+
$this->assertTrue($v->passes());
54+
55+
$v = new Validator($trans, ['foo' => ['key_1' => 'bar', 'key_2' => '']], ['foo' => ['required', Rule::array(['key_1', 'key_2'])]]);
56+
$this->assertTrue($v->passes());
57+
}
3858
}

tests/Validation/ValidationDateRuleTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,15 @@ public function testDateValidation()
134134
);
135135

136136
$this->assertEmpty($validator->errors()->first('date'));
137+
138+
$rule = Rule::date()->between('2024/01/01', '2024/02/01')->format('Y/m/d');
139+
140+
$validator = new Validator(
141+
$trans,
142+
['date' => '2024/01/15'],
143+
['date' => [$rule]]
144+
);
145+
146+
$this->assertEmpty($validator->errors()->first('date'));
137147
}
138148
}

tests/Validation/ValidationDimensionsRuleTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,16 @@ public function testGeneratesTheCorrectValidationMessages()
7373
$trans->get('validation.dimensions', ['width' => 100, 'height' => 100, 'min_ratio' => 0.5, 'max_ratio' => 0.4]),
7474
$validator->errors()->first('image')
7575
);
76+
77+
$validator = new Validator(
78+
$trans,
79+
['image' => $image],
80+
['image' => [$rule]]
81+
);
82+
83+
$this->assertSame(
84+
$trans->get('validation.dimensions', ['width' => 100, 'height' => 100, 'min_ratio' => 0.5, 'max_ratio' => 0.4]),
85+
$validator->errors()->first('image')
86+
);
7687
}
7788
}

tests/Validation/ValidationExcludeIfTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
namespace Illuminate\Tests\Validation;
44

55
use Exception;
6+
use Illuminate\Translation\ArrayLoader;
7+
use Illuminate\Translation\Translator;
68
use Illuminate\Validation\Rules\ExcludeIf;
9+
use Illuminate\Validation\Validator;
710
use InvalidArgumentException;
811
use PHPUnit\Framework\TestCase;
912
use stdClass;
@@ -57,4 +60,31 @@ public function testItThrowsExceptionIfRuleIsNotSerializable()
5760
return true;
5861
}));
5962
}
63+
64+
public function testExcludeIfRuleValidation()
65+
{
66+
$ruleTrue = new ExcludeIf(true);
67+
68+
$ruleFalse = new ExcludeIf(false);
69+
70+
$trans = new Translator(new ArrayLoader, 'en');
71+
72+
$data = ['foo' => 'FOO', 'bar' => 'BAR'];
73+
74+
$v = new Validator($trans, $data, ['foo' => $ruleTrue, 'bar' => 'nullable']);
75+
$this->assertTrue($v->passes());
76+
$this->assertSame(['bar' => 'BAR'], $v->validated());
77+
78+
$v = new Validator($trans, $data, ['foo' => (string) $ruleTrue, 'bar' => 'nullable']);
79+
$this->assertTrue($v->passes());
80+
$this->assertSame(['bar' => 'BAR'], $v->validated());
81+
82+
$v = new Validator($trans, $data, ['foo' => [$ruleTrue], 'bar' => 'nullable']);
83+
$this->assertTrue($v->passes());
84+
$this->assertSame(['bar' => 'BAR'], $v->validated());
85+
86+
$v = new Validator($trans, $data, ['foo' => $ruleFalse, 'bar' => 'nullable']);
87+
$this->assertTrue($v->passes());
88+
$this->assertSame($data, $v->validated());
89+
}
6090
}

tests/Validation/ValidationExistsRuleTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,24 @@ public function testItOnlyTrashedSoftDeletes()
245245
$this->assertSame('exists:table,NULL,softdeleted_at,"NOT_NULL"', (string) $rule);
246246
}
247247

248+
public function testItIsAPartOfListRules()
249+
{
250+
$rule = new Exists('users', 'id');
251+
252+
User::create(['id' => '1', 'type' => 'foo']);
253+
User::create(['id' => '2', 'type' => 'bar']);
254+
User::create(['id' => '3', 'type' => 'baz']);
255+
256+
$trans = $this->getIlluminateArrayTranslator();
257+
$v = new Validator($trans, [], ['id' => ['required', $rule]]);
258+
$v->setPresenceVerifier(new DatabasePresenceVerifier(Eloquent::getConnectionResolver()));
259+
260+
$v->setData(['id' => 1]);
261+
$this->assertTrue($v->passes());
262+
$v->setData(['id' => 2]);
263+
$this->assertTrue($v->passes());
264+
}
265+
248266
protected function createSchema()
249267
{
250268
$this->schema('default')->create('users', function ($table) {

tests/Validation/ValidationInRuleTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
namespace Illuminate\Tests\Validation;
44

55
use Illuminate\Tests\Validation\fixtures\Values;
6+
use Illuminate\Translation\ArrayLoader;
7+
use Illuminate\Translation\Translator;
68
use Illuminate\Validation\Rule;
79
use Illuminate\Validation\Rules\In;
10+
use Illuminate\Validation\Validator;
811
use PHPUnit\Framework\TestCase;
912

1013
include_once 'Enums.php';
@@ -69,4 +72,21 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
6972

7073
$this->assertSame('in:"one"', (string) $rule);
7174
}
75+
76+
public function testInRuleValidation()
77+
{
78+
$trans = new Translator(new ArrayLoader, 'en');
79+
80+
$v = new Validator($trans, ['x' => 'foo'], ['x' => Rule::in('foo', 'bar')]);
81+
$this->assertTrue($v->passes());
82+
83+
$v = new Validator($trans, ['x' => 'foo'], ['x' => (string) Rule::in('foo', 'bar')]);
84+
$this->assertTrue($v->passes());
85+
86+
$v = new Validator($trans, ['x' => 'foo'], ['x' => [Rule::in('bar', 'baz')]]);
87+
$this->assertFalse($v->passes());
88+
89+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['required', Rule::in('foo', 'bar')]]);
90+
$this->assertTrue($v->passes());
91+
}
7292
}

tests/Validation/ValidationNotInRuleTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
namespace Illuminate\Tests\Validation;
44

55
use Illuminate\Tests\Validation\fixtures\Values;
6+
use Illuminate\Translation\ArrayLoader;
7+
use Illuminate\Translation\Translator;
68
use Illuminate\Validation\Rule;
79
use Illuminate\Validation\Rules\NotIn;
10+
use Illuminate\Validation\Validator;
811
use PHPUnit\Framework\TestCase;
912

1013
include_once 'Enums.php';
@@ -65,4 +68,21 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
6568

6669
$this->assertSame('not_in:"one"', (string) $rule);
6770
}
71+
72+
public function testNotInRuleValidation()
73+
{
74+
$trans = new Translator(new ArrayLoader, 'en');
75+
76+
$v = new Validator($trans, ['x' => 'foo'], ['x' => Rule::notIn('bar', 'baz')]);
77+
$this->assertTrue($v->passes());
78+
79+
$v = new Validator($trans, ['x' => 'foo'], ['x' => (string) Rule::notIn('bar', 'baz')]);
80+
$this->assertTrue($v->passes());
81+
82+
$v = new Validator($trans, ['x' => 'foo'], ['x' => [Rule::notIn('foo', 'bar')]]);
83+
$this->assertFalse($v->passes());
84+
85+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['required', Rule::notIn('bar', 'baz')]]);
86+
$this->assertTrue($v->passes());
87+
}
6888
}

tests/Validation/ValidationProhibitedIfTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
namespace Illuminate\Tests\Validation;
44

55
use Exception;
6+
use Illuminate\Translation\ArrayLoader;
7+
use Illuminate\Translation\Translator;
68
use Illuminate\Validation\Rules\ProhibitedIf;
9+
use Illuminate\Validation\Validator;
710
use InvalidArgumentException;
811
use PHPUnit\Framework\TestCase;
912
use stdClass;
@@ -57,4 +60,28 @@ public function testItThrowsExceptionIfRuleIsNotSerializable()
5760
return true;
5861
}));
5962
}
63+
64+
public function testProhibitedIfRuleValidation()
65+
{
66+
$trans = new Translator(new ArrayLoader, 'en');
67+
68+
$rule = new ProhibitedIf(true);
69+
70+
$v = new Validator($trans, ['y' => 'foo'], ['x' => $rule]);
71+
$this->assertTrue($v->passes());
72+
73+
$v = new Validator($trans, ['y' => 'foo'], ['x' => (string) $rule]);
74+
$this->assertTrue($v->passes());
75+
76+
$v = new Validator($trans, ['y' => 'foo'], ['x' => [$rule]]);
77+
$this->assertTrue($v->passes());
78+
79+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['string', $rule]]);
80+
$this->assertTrue($v->fails());
81+
82+
$rule = new ProhibitedIf(false);
83+
84+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['string', $rule]]);
85+
$this->assertTrue($v->passes());
86+
}
6087
}

tests/Validation/ValidationRequiredIfTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
namespace Illuminate\Tests\Validation;
44

55
use Exception;
6+
use Illuminate\Translation\ArrayLoader;
7+
use Illuminate\Translation\Translator;
68
use Illuminate\Validation\Rules\RequiredIf;
9+
use Illuminate\Validation\Validator;
710
use InvalidArgumentException;
811
use PHPUnit\Framework\TestCase;
912

@@ -51,4 +54,28 @@ public function testItReturnedRuleIsNotSerializable()
5154
return true;
5255
}));
5356
}
57+
58+
public function testRequiredIfRuleValidation()
59+
{
60+
$trans = new Translator(new ArrayLoader, 'en');
61+
62+
$rule = new RequiredIf(true);
63+
64+
$v = new Validator($trans, ['x' => 'foo'], ['x' => $rule]);
65+
$this->assertTrue($v->passes());
66+
67+
$v = new Validator($trans, ['x' => ''], ['x' => (string) $rule]);
68+
$this->assertTrue($v->fails());
69+
70+
$v = new Validator($trans, ['x' => 'foo'], ['x' => [$rule]]);
71+
$this->assertTrue($v->passes());
72+
73+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['string', $rule]]);
74+
$this->assertTrue($v->passes());
75+
76+
$rule = new RequiredIf(false);
77+
78+
$v = new Validator($trans, ['x' => 'foo'], ['x' => ['string', $rule]]);
79+
$this->assertTrue($v->passes());
80+
}
5481
}

0 commit comments

Comments
 (0)