Skip to content

Commit cd2db12

Browse files
authored
Fix #286: Improve formatting of true and false values in Boolean rule (#290)
1 parent 1423457 commit cd2db12

8 files changed

Lines changed: 44 additions & 11 deletions

File tree

src/Rule/Boolean.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ public function getOptions(): array
8787
'message' => [
8888
'message' => $this->message,
8989
'parameters' => [
90-
'true' => $this->trueValue === true ? '1' : $this->trueValue,
91-
'false' => $this->falseValue === false ? '0' : $this->falseValue,
90+
'true' => $this->trueValue === true ? 'true' : $this->trueValue,
91+
'false' => $this->falseValue === false ? 'false' : $this->falseValue,
9292
],
9393
],
9494
'skipOnEmpty' => $this->skipOnEmpty,

src/Rule/BooleanHandler.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public function validate(mixed $value, object $rule, ValidationContext $context)
4444
$formattedMessage = $this->formatter->format(
4545
$rule->getMessage(),
4646
[
47-
'true' => $rule->getTrueValue() === true ? '1' : $rule->getTrueValue(),
48-
'false' => $rule->getFalseValue() === false ? '0' : $rule->getFalseValue(),
47+
'true' => $rule->getTrueValue() === true ? 'true' : $rule->getTrueValue(),
48+
'false' => $rule->getFalseValue() === false ? 'false' : $rule->getFalseValue(),
4949
'attribute' => $context->getAttribute(),
5050
'value' => $value,
5151
]

src/Rule/IsTrue.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public function getOptions(): array
6666
'message' => [
6767
'message' => $this->message,
6868
'parameters' => [
69-
'true' => $this->trueValue === true ? '1' : $this->trueValue,
69+
'true' => $this->trueValue === true ? 'true' : $this->trueValue,
7070
],
7171
],
7272
'skipOnEmpty' => $this->skipOnEmpty,

src/Rule/IsTrueHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function validate(mixed $value, object $rule, ValidationContext $context)
4444
$formattedMessage = $this->formatter->format(
4545
$rule->getMessage(),
4646
[
47-
'true' => $rule->getTrueValue() === true ? '1' : $rule->getTrueValue(),
47+
'true' => $rule->getTrueValue() === true ? 'true' : $rule->getTrueValue(),
4848
'attribute' => $context->getAttribute(),
4949
'value' => $value,
5050
]

tests/Rule/BooleanHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ public function failedValidationProvider(): array
2929
[
3030
new Boolean(trueValue: true, falseValue: false, strict: true),
3131
'0',
32-
[new Error($this->formatMessage($defaultRule->getMessage(), ['true' => '1', 'false' => '0']))],
32+
[new Error($this->formatMessage($defaultRule->getMessage(), ['true' => 'true', 'false' => 'false']))],
3333
],
3434
[
3535
new Boolean(trueValue: true, falseValue: false, strict: true),
3636
[],
37-
[new Error($this->formatMessage($defaultRule->getMessage(), ['true' => '1', 'false' => '0']))],
37+
[new Error($this->formatMessage($defaultRule->getMessage(), ['true' => 'true', 'false' => 'false']))],
3838
],
3939
];
4040
}

tests/Rule/BooleanTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,23 @@ public function optionsDataProvider(): array
2929
'skipOnError' => false,
3030
],
3131
],
32+
[
33+
new Boolean(trueValue: true, falseValue: false, strict: true),
34+
[
35+
'trueValue' => true,
36+
'falseValue' => false,
37+
'strict' => true,
38+
'message' => [
39+
'message' => 'The value must be either "{true}" or "{false}".',
40+
'parameters' => [
41+
'true' => 'true',
42+
'false' => 'false',
43+
],
44+
],
45+
'skipOnEmpty' => false,
46+
'skipOnError' => false,
47+
],
48+
],
3249
[
3350
new Boolean(
3451
trueValue: 'YES',

tests/Rule/IsTrueHandlerTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,20 @@ final class IsTrueHandlerTest extends AbstractRuleValidatorTest
1414
public function failedValidationProvider(): array
1515
{
1616
$message = 'The value must be "1".';
17+
$strictTrueMessage = 'The value must be "true".';
1718

1819
return [
1920
[new IsTrue(), '5', [new Error($message)]],
2021
[new IsTrue(), null, [new Error($message)]],
2122
[new IsTrue(), [], [new Error($message)]],
2223
[new IsTrue(strict: true), true, [new Error($message)]],
23-
[new IsTrue(trueValue: true, strict: true), '1', [new Error($message)]],
24-
[new IsTrue(trueValue: true, strict: true), [], [new Error($message)]],
24+
[new IsTrue(trueValue: true, strict: true), '1', [new Error($strictTrueMessage)]],
25+
[new IsTrue(trueValue: true, strict: true), [], [new Error($strictTrueMessage)]],
2526

2627
[new IsTrue(), false, [new Error($message)]],
2728
[new IsTrue(), '0', [new Error($message)]],
2829
[new IsTrue(strict: true), '0', [new Error($message)]],
29-
[new IsTrue(trueValue: true, strict: true), false, [new Error($message)]],
30+
[new IsTrue(trueValue: true, strict: true), false, [new Error($strictTrueMessage)]],
3031
];
3132
}
3233

tests/Rule/IsTrueTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,21 @@ public function optionsDataProvider(): array
2727
'skipOnError' => false,
2828
],
2929
],
30+
[
31+
new IsTrue(trueValue: true, strict: true),
32+
[
33+
'trueValue' => true,
34+
'strict' => true,
35+
'message' => [
36+
'message' => 'The value must be "{true}".',
37+
'parameters' => [
38+
'true' => 'true',
39+
],
40+
],
41+
'skipOnEmpty' => false,
42+
'skipOnError' => false,
43+
],
44+
],
3045
[
3146
new IsTrue(
3247
trueValue: 'YES',

0 commit comments

Comments
 (0)