From 3cf1657d54b6d9d2282ef6d6403cf5f6211f081e Mon Sep 17 00:00:00 2001 From: Alejandro Celaya <alejandro@alejandrocelaya.com> Date: Fri, 29 Nov 2019 18:55:27 +0100 Subject: [PATCH] Simplified invalidElements to be a plain list of keys when a ValidationException is cast into a problem details error --- module/Core/src/Exception/ValidationException.php | 9 +++++++-- module/Core/test/Exception/ValidationExceptionTest.php | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/module/Core/src/Exception/ValidationException.php b/module/Core/src/Exception/ValidationException.php index f3a5c515..abceec91 100644 --- a/module/Core/src/Exception/ValidationException.php +++ b/module/Core/src/Exception/ValidationException.php @@ -10,6 +10,7 @@ use Zend\InputFilter\InputFilterInterface; use Zend\ProblemDetails\Exception\CommonProblemDetailsExceptionTrait; use Zend\ProblemDetails\Exception\ProblemDetailsExceptionInterface; +use function array_keys; use function Functional\reduce_left; use function is_array; use function print_r; @@ -24,6 +25,9 @@ class ValidationException extends InvalidArgumentException implements ProblemDet private const TITLE = 'Invalid data'; private const TYPE = 'INVALID_ARGUMENT'; + /** @var array */ + private $invalidElements; + public static function fromInputFilter(InputFilterInterface $inputFilter, ?Throwable $prev = null): self { return static::fromArray($inputFilter->getMessages(), $prev); @@ -38,14 +42,15 @@ class ValidationException extends InvalidArgumentException implements ProblemDet $e->title = self::TITLE; $e->type = self::TYPE; $e->status = StatusCodeInterface::STATUS_BAD_REQUEST; - $e->additional = ['invalidElements' => $invalidData]; + $e->invalidElements = $invalidData; + $e->additional = ['invalidElements' => array_keys($invalidData)]; return $e; } public function getInvalidElements(): array { - return $this->additional['invalidElements']; + return $this->invalidElements; } public function __toString(): string diff --git a/module/Core/test/Exception/ValidationExceptionTest.php b/module/Core/test/Exception/ValidationExceptionTest.php index 069506b5..11bb8026 100644 --- a/module/Core/test/Exception/ValidationExceptionTest.php +++ b/module/Core/test/Exception/ValidationExceptionTest.php @@ -12,6 +12,7 @@ use Shlinkio\Shlink\Core\Exception\ValidationException; use Throwable; use Zend\InputFilter\InputFilterInterface; +use function array_keys; use function print_r; class ValidationExceptionTest extends TestCase @@ -38,6 +39,7 @@ EOT; $e = ValidationException::fromInputFilter($inputFilter->reveal()); $this->assertEquals($invalidData, $e->getInvalidElements()); + $this->assertEquals(['invalidElements' => array_keys($invalidData)], $e->getAdditionalData()); $this->assertEquals('Provided data is not valid', $e->getMessage()); $this->assertEquals(StatusCodeInterface::STATUS_BAD_REQUEST, $e->getCode()); $this->assertEquals($prev, $e->getPrevious());