diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php index ddfa728715c5718705d72232937808799a6761d4..f5c9b51c023b7eef24dc2e2ec2839ac035339b8c 100644 --- a/package_manager/src/ValidationResult.php +++ b/package_manager/src/ValidationResult.php @@ -43,6 +43,9 @@ final class ValidationResult { * The errors summary. */ private function __construct(int $severity, array $messages, ?TranslatableMarkup $summary = NULL) { + if (empty($messages)) { + throw new \InvalidArgumentException('At least one message is required.'); + } if (count($messages) > 1 && !$summary) { throw new \InvalidArgumentException('If more than one message is provided, a summary is required.'); } diff --git a/package_manager/tests/src/Unit/ValidationResultTest.php b/package_manager/tests/src/Unit/ValidationResultTest.php index ad994450bfdb45e54ea4662e16e7419778b31bf5..67f08161fb7810beb89a1bbe669bed426a96513d 100644 --- a/package_manager/tests/src/Unit/ValidationResultTest.php +++ b/package_manager/tests/src/Unit/ValidationResultTest.php @@ -38,20 +38,53 @@ class ValidationResultTest extends UnitTestCase { /** * @covers ::createWarning + * + * @param string[] $messages + * The warning messages of the validation result. + * @param string $expected_exception_message + * The expected exception message. + * + * @dataProvider providerCreateExceptions */ - public function testCreateWarningResultException(): void { + public function testCreateWarningResultException(array $messages, string $expected_exception_message): void { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('If more than one message is provided, a summary is required.'); - ValidationResult::createWarning(['Something is wrong', 'Something else is also wrong'], NULL); + $this->expectExceptionMessage($expected_exception_message); + ValidationResult::createWarning($messages, NULL); } /** * @covers ::createError + * + * @param string[] $messages + * The error messages of the validation result. + * @param string $expected_exception_message + * The expected exception message. + * + * @dataProvider providerCreateExceptions */ - public function testCreateErrorResultException(): void { + public function testCreateErrorResultException(array $messages, string $expected_exception_message): void { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('If more than one message is provided, a summary is required.'); - ValidationResult::createError(['Something is wrong', 'Something else is also wrong'], NULL); + $this->expectExceptionMessage($expected_exception_message); + ValidationResult::createError($messages, NULL); + } + + /** + * Data provider for test methods that test create exceptions. + * + * @return array[] + * The test cases. + */ + public function providerCreateExceptions(): array { + return [ + '2 messages, no summary' => [ + ['Something is wrong', 'Something else is also wrong'], + 'If more than one message is provided, a summary is required.', + ], + 'no messages' => [ + [], + 'At least one message is required.', + ], + ]; } /**