Skip to content

Commit 5a6ba21

Browse files
committed
tests
1 parent 49d75ca commit 5a6ba21

File tree

5 files changed

+42
-4
lines changed

5 files changed

+42
-4
lines changed

tests/Common/Reader/ReaderWithFilter/BaseReaderWithBetweenTestCase.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
use PHPUnit\Framework\Attributes\DataProvider;
99
use Yiisoft\Data\Reader\Filter\Between;
1010
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
11+
use Yiisoft\Data\Tests\Support\StringableValue;
1112

1213
abstract class BaseReaderWithBetweenTestCase extends BaseReaderTestCase
1314
{
1415
public static function dataWithReader(): iterable
1516
{
17+
yield 'stringable' => [new Between('email', new StringableValue('ta'), new StringableValue('tz')), [4, 5]];
1618
yield 'float' => [new Between('balance', 10.25, 100.0), [1, 3, 5]];
1719
yield 'datetime' => [new Between('born_at', new DateTimeImmutable('1989-01-01'), new DateTimeImmutable('1991-01-01')), [5]];
1820
yield 'datetime 2' => [new Between('born_at', new DateTimeImmutable('1990-01-02'), new DateTimeImmutable('1990-01-03')), []];

tests/Common/Reader/ReaderWithFilter/BaseReaderWithEqualsTestCase.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PHPUnit\Framework\Attributes\DataProvider;
99
use Yiisoft\Data\Reader\Filter\Equals;
1010
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
11+
use Yiisoft\Data\Tests\Support\StringableValue;
1112

1213
abstract class BaseReaderWithEqualsTestCase extends BaseReaderTestCase
1314
{
@@ -16,6 +17,7 @@ public static function dataWithReader(): iterable
1617
yield 'integer' => [new Equals('number', 2), [2]];
1718
yield 'float' => [new Equals('balance', 10.25), [1]];
1819
yield 'string' => [new Equals('email', 'the@best'), [4]];
20+
yield 'stringable' => [new Equals('email', new StringableValue('the@best')), [4]];
1921
yield 'datetime' => [new Equals('born_at', new DateTimeImmutable('1990-01-01')), [5]];
2022
}
2123

tests/Common/Reader/ReaderWithFilter/BaseReaderWithInTestCase.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,26 @@
44

55
namespace Yiisoft\Data\Tests\Common\Reader\ReaderWithFilter;
66

7+
use PHPUnit\Framework\Attributes\DataProvider;
78
use Yiisoft\Data\Reader\Filter\In;
89
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
10+
use Yiisoft\Data\Tests\Support\StringableValue;
911

1012
abstract class BaseReaderWithInTestCase extends BaseReaderTestCase
1113
{
12-
public function testWithReader(): void
14+
public static function dataWithReader(): iterable
1315
{
14-
$reader = $this->getReader()->withFilter(new In('number', [2, 3]));
15-
$this->assertFixtures([1, 2], $reader->read());
16+
yield 'int' => [new In('number', [2, 3]), [1, 2]];
17+
yield 'stringable' => [
18+
new In('email', [new StringableValue('seed@beat'), new StringableValue('the@best')]),
19+
[2, 3],
20+
];
21+
}
22+
23+
#[DataProvider('dataWithReader')]
24+
public function testWithReader(In $filter, array $expected): void
25+
{
26+
$reader = $this->getReader()->withFilter($filter);
27+
$this->assertFixtures($expected, $reader->read());
1628
}
1729
}

tests/Common/Reader/ReaderWithFilter/BaseReaderWithLikeTestCase.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Yiisoft\Data\Reader\Filter\Like;
99
use Yiisoft\Data\Reader\Filter\LikeMode;
1010
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
11+
use Yiisoft\Data\Tests\Support\StringableValue;
1112

1213
abstract class BaseReaderWithLikeTestCase extends BaseReaderTestCase
1314
{
@@ -24,13 +25,14 @@ public static function dataWithReader(): array
2425
'wildcard is not supported, %' => ['email', '%st', null, []],
2526
'wildcard is not supported, _' => ['email', '____@___t', null, []],
2627
'search: contains backslash' => ['email', 'foo@bar\\baz', null, [0]],
28+
'stringable' => ['email', new StringableValue('seed@'), null, [2]],
2729
];
2830
}
2931

3032
#[DataProvider('dataWithReader')]
3133
public function testWithReader(
3234
string $field,
33-
string $value,
35+
mixed $value,
3436
bool|null $caseSensitive,
3537
array $expectedFixtureIndexes,
3638
): void {

tests/Support/StringableValue.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Yiisoft\Data\Tests\Support;
6+
7+
use Stringable;
8+
9+
final class StringableValue implements Stringable
10+
{
11+
public function __construct(
12+
private readonly string $value,
13+
) {
14+
}
15+
16+
public function __toString(): string
17+
{
18+
return $this->value;
19+
}
20+
}

0 commit comments

Comments
 (0)