Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit c76c20e

Browse files
authored
Merge pull request #73 from programmatordev/YAPV-57-create-istrue-rule
Create IsTrue rule
2 parents 53670db + 29eab27 commit c76c20e

7 files changed

+122
-0
lines changed

docs/03-rules.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- [Blank](03-rules_blank.md)
1414
- [Count](03-rules_count.md)
1515
- [IsNull](03-rules_is-null.md)
16+
- [IsTrue](03-rules_is-true.md)
1617
- [NotBlank](03-rules_not-blank.md)
1718
- [NotNull](03-rules_not-null.md)
1819
- [Type](03-rules_type.md)

docs/03-rules_is-true.md

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# IsTrue
2+
3+
Validates that a value is `true`.
4+
5+
```php
6+
IsTrue(
7+
?string $message = null
8+
);
9+
```
10+
11+
## Basic Usage
12+
13+
```php
14+
// anything else will be false
15+
Validator::isTrue()->validate(true); // true
16+
```
17+
18+
## Options
19+
20+
### `message`
21+
22+
type: `?string` default: `The {{ name }} value should be true, {{ value }} given.`
23+
24+
Message that will be shown if the value is true.
25+
26+
The following parameters are available:
27+
28+
| Parameter | Description |
29+
|---------------|---------------------------|
30+
| `{{ value }}` | The current invalid value |
31+
| `{{ name }}` | Name of the invalid value |
32+
33+
## Changelog
34+
35+
- `1.3.0` Created

src/ChainedValidatorInterface.php

+4
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ public function isNull(
8484
?string $message = null
8585
): ChainedValidatorInterface&Validator;
8686

87+
public function isTrue(
88+
?string $message = null
89+
): ChainedValidatorInterface&Validator;
90+
8791
public function language(
8892
string $code = 'alpha-2',
8993
?string $message = null

src/Exception/IsTrueException.php

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
namespace ProgrammatorDev\Validator\Exception;
4+
5+
class IsTrueException extends ValidationException {}

src/Rule/IsTrue.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace ProgrammatorDev\Validator\Rule;
4+
5+
use ProgrammatorDev\Validator\Exception\IsTrueException;
6+
7+
class IsTrue extends AbstractRule implements RuleInterface
8+
{
9+
private string $message = 'The {{ name }} value should be true, {{ value }} given.';
10+
11+
public function __construct(
12+
?string $message = null
13+
)
14+
{
15+
$this->message = $message ?? $this->message;
16+
}
17+
18+
public function assert(mixed $value, ?string $name = null): void
19+
{
20+
if ($value !== true) {
21+
throw new IsTrueException(
22+
message: $this->message,
23+
parameters: [
24+
'value' => $value,
25+
'name' => $name
26+
]
27+
);
28+
}
29+
}
30+
}

src/StaticValidatorInterface.php

+4
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ public static function notNull(
124124
?string $message = null
125125
): ChainedValidatorInterface&Validator;
126126

127+
public static function isTrue(
128+
?string $message = null
129+
): ChainedValidatorInterface&Validator;
130+
127131
public static function optional(
128132
Validator $validator
129133
): ChainedValidatorInterface&Validator;

tests/IsTrueTest.php

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
namespace ProgrammatorDev\Validator\Test;
4+
5+
use ProgrammatorDev\Validator\Exception\IsTrueException;
6+
use ProgrammatorDev\Validator\Rule\IsTrue;
7+
use ProgrammatorDev\Validator\Test\Util\TestRuleFailureConditionTrait;
8+
use ProgrammatorDev\Validator\Test\Util\TestRuleMessageOptionTrait;
9+
use ProgrammatorDev\Validator\Test\Util\TestRuleSuccessConditionTrait;
10+
11+
class IsTrueTest extends AbstractTest
12+
{
13+
use TestRuleFailureConditionTrait;
14+
use TestRuleSuccessConditionTrait;
15+
use TestRuleMessageOptionTrait;
16+
17+
public static function provideRuleFailureConditionData(): \Generator
18+
{
19+
$exception = IsTrueException::class;
20+
$message = '/The (.*) value should be true, (.*) given\./';
21+
22+
yield 'int' => [new IsTrue(), 1, $exception, $message];
23+
yield 'string' => [new IsTrue(), 'string', $exception, $message];
24+
yield 'false' => [new IsTrue(), false, $exception, $message];
25+
yield 'array' => [new IsTrue(), [], $exception, $message];
26+
}
27+
28+
public static function provideRuleSuccessConditionData(): \Generator
29+
{
30+
yield 'true' => [new IsTrue(), true];
31+
}
32+
33+
public static function provideRuleMessageOptionData(): \Generator
34+
{
35+
yield 'message' => [
36+
new IsTrue(
37+
message: '{{ name }} | {{ value }}'
38+
),
39+
false,
40+
'test | false'
41+
];
42+
}
43+
}

0 commit comments

Comments
 (0)