Skip to content

Commit

Permalink
Add value (string/numeric) to validation error exception
Browse files Browse the repository at this point in the history
  • Loading branch information
pionl committed Sep 12, 2022
1 parent f735e12 commit 0a55171
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 5 deletions.
3 changes: 2 additions & 1 deletion src/Actions/ValidateAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ public function __construct(

public function execute(array $rules, mixed $value, string $key): void
{
$valueForLog = (is_string($value) || is_numeric($value)) ? (string) $value : null;
foreach ($rules as $rule) {
if ($rule->passes($value) === false) {
throw $this->exceptionBuilder->validationFailed($key, $rule::class);
throw $this->exceptionBuilder->validationFailed($key, $rule::class, $valueForLog);
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions src/Builders/ExceptionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,13 @@ public function notAnArray(string $key): Exception
return new NotSupportedDataException($key);
}

public function validationFailed(string $key, string $ruleClassName): Exception
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception
{
$classNameParts = explode('\\', $ruleClassName);
$shortClassName = end($classNameParts);

return new ValidationFailedException($key, $shortClassName . ' failed');
$valueMessage = $value === null ? '' : (' with value ' . $value);
return new ValidationFailedException($key, $shortClassName . ' failed' . $valueMessage);
}

public function notXML(string $key): Exception
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/ExceptionBuilderContract.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public function notAnArray(string $key): Exception;
/**
* @param class-string<RuleContract> $ruleClassName
*/
public function validationFailed(string $key, string $ruleClassName): Exception;
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception;

public function notXML(string $key): Exception;
}
2 changes: 1 addition & 1 deletion tests/Builders/CustomExceptionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public function notAnArray(string $key): Exception
return new Exception('notAnArray: ' . $key);
}

public function validationFailed(string $key, string $ruleClassName): Exception
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception
{
return new Exception('validationFailed: ' . $key . ' ' . $ruleClassName);
}
Expand Down

0 comments on commit 0a55171

Please sign in to comment.