diff --git a/src/Input.php b/src/Input.php index d8f2b68e..76b71621 100644 --- a/src/Input.php +++ b/src/Input.php @@ -472,13 +472,21 @@ protected function injectNotEmptyValidator() } $this->notEmptyValidator = true; + $options = [ + 'type' => [ + NotEmpty::NULL | + NotEmpty::STRING | + NotEmpty::EMPTY_ARRAY | + NotEmpty::OBJECT + ], + ]; if (class_exists(AbstractPluginManager::class)) { - $chain->prependByName('NotEmpty', [], true); + $chain->prependByName('NotEmpty', $options, true); return; } - $chain->prependValidator(new NotEmpty(), true); + $chain->prependValidator(new NotEmpty($options), true); } } diff --git a/test/FileInputTest.php b/test/FileInputTest.php index b4684717..80792bf3 100644 --- a/test/FileInputTest.php +++ b/test/FileInputTest.php @@ -430,9 +430,9 @@ public function isRequiredVsAllowEmptyVsContinueIfEmptyVsIsValidProvider() $dataSets = parent::isRequiredVsAllowEmptyVsContinueIfEmptyVsIsValidProvider(); // FileInput do not use NotEmpty validator so the only validator present in the chain is the custom one. - unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X / tmp_name']); - unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X / single']); - unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X / multi']); + unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X, Value: Empty / tmp_name']); + unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X, Value: Empty / single']); + unset($dataSets['Required: T; AEmpty: F; CIEmpty: F; Validator: X, Value: Empty / multi']); return $dataSets; } diff --git a/test/InputTest.php b/test/InputTest.php index c683d916..ce56a43f 100644 --- a/test/InputTest.php +++ b/test/InputTest.php @@ -542,7 +542,9 @@ public function setValueProvider() public function isRequiredVsAllowEmptyVsContinueIfEmptyVsIsValidProvider() { + $allValues = $this->setValueProvider(); $emptyValues = $this->emptyValueProvider(); + $nonEmptyValues = array_diff_key($allValues, $emptyValues); $isRequired = true; $aEmpty = true; @@ -565,18 +567,33 @@ public function isRequiredVsAllowEmptyVsContinueIfEmptyVsIsValidProvider() // @codingStandardsIgnoreStart $dataTemplates=[ // Description => [$isRequired, $allowEmpty, $continueIfEmpty, $validator, [$values], $expectedIsValid, $expectedMessages] - 'Required: T; AEmpty: T; CIEmpty: T; Validator: T' => [ $isRequired, $aEmpty, $cIEmpty, $validatorValid , $emptyValues, $isValid, []], - 'Required: T; AEmpty: T; CIEmpty: T; Validator: F' => [ $isRequired, $aEmpty, $cIEmpty, $validatorInvalid, $emptyValues, !$isValid, $validatorMsg], - 'Required: T; AEmpty: T; CIEmpty: F; Validator: X' => [ $isRequired, $aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues, $isValid, []], - 'Required: T; AEmpty: F; CIEmpty: T; Validator: T' => [ $isRequired, !$aEmpty, $cIEmpty, $validatorValid , $emptyValues, $isValid, []], - 'Required: T; AEmpty: F; CIEmpty: T; Validator: F' => [ $isRequired, !$aEmpty, $cIEmpty, $validatorInvalid, $emptyValues, !$isValid, $validatorMsg], - 'Required: T; AEmpty: F; CIEmpty: F; Validator: X' => [ $isRequired, !$aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues, !$isValid, $notEmptyMsg], - 'Required: F; AEmpty: T; CIEmpty: T; Validator: T' => [!$isRequired, $aEmpty, $cIEmpty, $validatorValid , $emptyValues, $isValid, []], - 'Required: F; AEmpty: T; CIEmpty: T; Validator: F' => [!$isRequired, $aEmpty, $cIEmpty, $validatorInvalid, $emptyValues, !$isValid, $validatorMsg], - 'Required: F; AEmpty: T; CIEmpty: F; Validator: X' => [!$isRequired, $aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues, $isValid, []], - 'Required: F; AEmpty: F; CIEmpty: T; Validator: T' => [!$isRequired, !$aEmpty, $cIEmpty, $validatorValid , $emptyValues, $isValid, []], - 'Required: F; AEmpty: F; CIEmpty: T; Validator: F' => [!$isRequired, !$aEmpty, $cIEmpty, $validatorInvalid, $emptyValues, !$isValid, $validatorMsg], - 'Required: F; AEmpty: F; CIEmpty: F; Validator: X' => [!$isRequired, !$aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues, $isValid, []], + 'Required: T; AEmpty: T; CIEmpty: T; Validator: T' => [ $isRequired, $aEmpty, $cIEmpty, $validatorValid , $allValues , $isValid, []], + 'Required: T; AEmpty: T; CIEmpty: T; Validator: F' => [ $isRequired, $aEmpty, $cIEmpty, $validatorInvalid, $allValues , !$isValid, $validatorMsg], + + 'Required: T; AEmpty: T; CIEmpty: F; Validator: X, Value: Empty' => [ $isRequired, $aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues , $isValid, []], + 'Required: T; AEmpty: T; CIEmpty: F; Validator: T, Value: Not Empty' => [ $isRequired, $aEmpty, !$cIEmpty, $validatorValid , $nonEmptyValues, $isValid, []], + 'Required: T; AEmpty: T; CIEmpty: F; Validator: F, Value: Not Empty' => [ $isRequired, $aEmpty, !$cIEmpty, $validatorInvalid, $nonEmptyValues, !$isValid, $validatorMsg], + + 'Required: T; AEmpty: F; CIEmpty: T; Validator: T' => [ $isRequired, !$aEmpty, $cIEmpty, $validatorValid , $allValues , $isValid, []], + 'Required: T; AEmpty: F; CIEmpty: T; Validator: F' => [ $isRequired, !$aEmpty, $cIEmpty, $validatorInvalid, $allValues , !$isValid, $validatorMsg], + + 'Required: T; AEmpty: F; CIEmpty: F; Validator: X, Value: Empty' => [ $isRequired, !$aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues , !$isValid, $notEmptyMsg], + 'Required: T; AEmpty: F; CIEmpty: F; Validator: T, Value: Not Empty' => [ $isRequired, !$aEmpty, !$cIEmpty, $validatorValid , $nonEmptyValues, $isValid, []], + 'Required: T; AEmpty: F; CIEmpty: F; Validator: F, Value: Not Empty' => [ $isRequired, !$aEmpty, !$cIEmpty, $validatorInvalid, $nonEmptyValues, !$isValid, $validatorMsg], + + 'Required: F; AEmpty: T; CIEmpty: T; Validator: T' => [!$isRequired, $aEmpty, $cIEmpty, $validatorValid , $allValues , $isValid, []], + 'Required: F; AEmpty: T; CIEmpty: T; Validator: F' => [!$isRequired, $aEmpty, $cIEmpty, $validatorInvalid, $allValues , !$isValid, $validatorMsg], + + 'Required: F; AEmpty: T; CIEmpty: F; Validator: X, Value: Empty' => [!$isRequired, $aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues , $isValid, []], + 'Required: F; AEmpty: T; CIEmpty: F; Validator: T, Value: Not Empty' => [!$isRequired, $aEmpty, !$cIEmpty, $validatorValid , $nonEmptyValues, $isValid, []], + 'Required: F; AEmpty: T; CIEmpty: F; Validator: F, Value: Not Empty' => [!$isRequired, $aEmpty, !$cIEmpty, $validatorInvalid, $nonEmptyValues, !$isValid, $validatorMsg], + + 'Required: F; AEmpty: F; CIEmpty: T; Validator: T' => [!$isRequired, !$aEmpty, $cIEmpty, $validatorValid , $allValues , $isValid, []], + 'Required: F; AEmpty: F; CIEmpty: T; Validator: F' => [!$isRequired, !$aEmpty, $cIEmpty, $validatorInvalid, $allValues , !$isValid, $validatorMsg], + + 'Required: F; AEmpty: F; CIEmpty: F; Validator: X, Value: Empty' => [!$isRequired, !$aEmpty, !$cIEmpty, $validatorNotCall, $emptyValues , $isValid, []], + 'Required: F; AEmpty: F; CIEmpty: F; Validator: T, Value: Not Empty' => [!$isRequired, !$aEmpty, !$cIEmpty, $validatorValid , $nonEmptyValues, $isValid, []], + 'Required: F; AEmpty: F; CIEmpty: F; Validator: F, Value: Not Empty' => [!$isRequired, !$aEmpty, !$cIEmpty, $validatorInvalid, $nonEmptyValues, !$isValid, $validatorMsg], ]; // @codingStandardsIgnoreEnd