Skip to content

Commit 680b10c

Browse files
committed
Add subject to be more specific about what cannot be empty
1 parent 32d000f commit 680b10c

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

src/Command/AddArticle.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ public function execute(InputInterface $input, OutputInterface $output): int
2626
$authorQuestion = new Question('Please enter the name of the author: ', '');
2727
$authorQuestion->setValidator(
2828
static function (string $value): string {
29-
$nonEmptyStringValidator = new NonEmptyStringValidator();
29+
$nonEmptyStringValidator = new NonEmptyStringValidator('Author');
3030
$validationResult = $nonEmptyStringValidator->validate($value);
3131
if (!$validationResult->isValid) {
32-
throw new RuntimeException('Author cannot be empty');
32+
throw new RuntimeException($validationResult->validationErrorMessage);
3333
}
3434

3535
return new StringSanitizer()->sanitize($validationResult->value);
@@ -40,10 +40,10 @@ static function (string $value): string {
4040
$titleQuestion = new Question('Please enter the title of the article: ', '');
4141
$titleQuestion->setValidator(
4242
static function (string $value): string {
43-
$nonEmptyStringValidator = new NonEmptyStringValidator();
43+
$nonEmptyStringValidator = new NonEmptyStringValidator('Title');
4444
$validationResult = $nonEmptyStringValidator->validate($value);
4545
if (!$validationResult->isValid) {
46-
throw new RuntimeException('Title cannot be empty');
46+
throw new RuntimeException($validationResult->validationErrorMessage);
4747
}
4848

4949
return new StringSanitizer()->sanitize($validationResult->value);
@@ -54,10 +54,10 @@ static function (string $value): string {
5454
$urlQuestion = new Question('Please enter the URL of the article: ', '');
5555
$urlQuestion->setValidator(
5656
static function (string $value): string {
57-
$nonEmptyStringValidator = new NonEmptyStringValidator();
57+
$nonEmptyStringValidator = new NonEmptyStringValidator('URL');
5858
$validationResult = $nonEmptyStringValidator->validate($value);
5959
if (!$validationResult->isValid) {
60-
throw new RuntimeException('URL cannot be empty');
60+
throw new RuntimeException($validationResult->validationErrorMessage);
6161
}
6262

6363
if (!filter_var($validationResult->value, FILTER_VALIDATE_URL)) {

src/Domain/Question/Validation/NonEmptyStringValidator.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@
55

66
final readonly class NonEmptyStringValidator implements Validator
77
{
8+
public function __construct(
9+
private string $subject,
10+
) {
11+
}
12+
813
public function validate(string $value): ValidationResult
914
{
1015
$trimmedValue = trim($value);
1116
if ($trimmedValue === '') {
12-
return ValidationResult::invalid('The value cannot be empty');
17+
return ValidationResult::invalid(sprintf('%s cannot be empty', $this->subject));
1318
}
1419

1520
return ValidationResult::valid($trimmedValue);

tests/unit/Domain/Question/Validation/NonEmptyStringValidatorTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ final class NonEmptyStringValidatorTest extends TestCase
1414
{
1515
#[Test]
1616
#[DataProvider('provideDataToTestTheNonEmptyStringValidator')]
17-
public function theNonEmptyStringValidator(string $value, ValidationResult $expectedResult): void
17+
public function theNonEmptyStringValidator(string $subject, string $value, ValidationResult $expectedResult): void
1818
{
19-
$validator = new NonEmptyStringValidator();
19+
$validator = new NonEmptyStringValidator($subject);
2020
self::assertEquals($expectedResult, $validator->validate($value));
2121
}
2222

2323
public static function provideDataToTestTheNonEmptyStringValidator(): Generator
2424
{
25-
yield ['test', ValidationResult::valid('test')];
26-
yield [' test ', ValidationResult::valid('test')];
27-
yield ['', ValidationResult::invalid('The value cannot be empty')];
28-
yield [' ', ValidationResult::invalid('The value cannot be empty')];
25+
yield ['Title', 'test', ValidationResult::valid('test')];
26+
yield ['Title', ' test ', ValidationResult::valid('test')];
27+
yield ['Title', '', ValidationResult::invalid('Title cannot be empty')];
28+
yield ['Title', ' ', ValidationResult::invalid('Title cannot be empty')];
2929
}
3030
}

0 commit comments

Comments
 (0)