From 15867f3b35f30aace8ef49014d8f4befbdbf7a59 Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Thu, 6 May 2021 23:26:14 +0200 Subject: [PATCH] Fix unless rules --- .../Concerns/ValidatesAttributes.php | 8 ------ tests/Validation/ValidationValidatorTest.php | 26 +++++++++++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index 2ddbff3f0365..a35ddd6c3436 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -1466,10 +1466,6 @@ public function validateExcludeUnless($attribute, $value, $parameters) { $this->requireParameterCount(2, $parameters, 'exclude_unless'); - if (! Arr::has($this->data, $parameters[0])) { - return true; - } - [$values, $other] = $this->prepareValuesAndOther($parameters); return in_array($other, $values, is_bool($other) || is_null($other)); @@ -1487,10 +1483,6 @@ public function validateRequiredUnless($attribute, $value, $parameters) { $this->requireParameterCount(2, $parameters, 'required_unless'); - if (! Arr::has($this->data, $parameters[0])) { - return true; - } - [$values, $other] = $this->prepareValuesAndOther($parameters); if (! in_array($other, $values, is_bool($other) || is_null($other))) { diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 05c53e0e1a54..8676d5f71d44 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -1156,6 +1156,10 @@ public function testRequiredUnless() $v = new Validator($trans, ['first' => 'sven'], ['last' => 'required_unless:first,taylor,sven']); $this->assertTrue($v->passes()); + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, [], ['bar' => 'required_unless:foo,true']); + $this->assertTrue($v->fails()); + $trans = $this->getIlluminateArrayTranslator(); $v = new Validator($trans, ['foo' => false], ['bar' => 'required_unless:foo,false']); $this->assertTrue($v->passes()); @@ -1164,6 +1168,18 @@ public function testRequiredUnless() $v = new Validator($trans, ['foo' => false], ['bar' => 'required_unless:foo,true']); $this->assertTrue($v->fails()); + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['bar' => '1'], ['bar' => 'required_unless:foo,true']); + $this->assertTrue($v->passes()); + + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, [], ['bar' => 'required_unless:foo,true']); + $this->assertTrue($v->fails()); + + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, [], ['bar' => 'required_unless:foo,null']); + $this->assertTrue($v->passes()); + $trans = $this->getIlluminateArrayTranslator(); $v = new Validator($trans, ['foo' => true], ['bar' => 'required_unless:foo,null']); $this->assertTrue($v->fails()); @@ -5524,6 +5540,16 @@ public function testExcludeUnless() ); $this->assertTrue($validator->passes()); $this->assertSame(['foo' => true], $validator->validated()); + + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['bar' => 'Hello'], ['bar' => 'exclude_unless:foo,true']); + $this->assertTrue($v->passes()); + $this->assertSame([], $v->validated()); + + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['bar' => 'Hello'], ['bar' => 'exclude_unless:foo,null']); + $this->assertTrue($v->passes()); + $this->assertSame(['bar' => 'Hello'], $v->validated()); } public function testExcludeValuesAreReallyRemoved()