Skip to content

Commit 107d572

Browse files
committed
between and equals
1 parent 3c0e136 commit 107d572

File tree

4 files changed

+55
-17
lines changed

4 files changed

+55
-17
lines changed

tests/Common/FixtureTrait.php

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,33 @@
44

55
namespace Yiisoft\Data\Tests\Common;
66

7+
use DateTimeImmutable;
8+
79
trait FixtureTrait
810
{
9-
protected static $fixtures = [
10-
['number' => 1, 'email' => 'foo@bar\\baz', 'balance' => 10.25, 'born_at' => null],
11-
['number' => 2, 'email' => 'bar@foo', 'balance' => 1.0, 'born_at' => null],
12-
['number' => 3, 'email' => 'seed@beat', 'balance' => 100.0, 'born_at' => null],
13-
['number' => 4, 'email' => 'the@best', 'balance' => 500.0, 'born_at' => null],
14-
['number' => 5, 'email' => 'test@test', 'balance' => 42.0, 'born_at' => '1990-01-01'],
15-
];
16-
1711
protected function assertFixtures(array $expectedFixtureIndexes, array $actualFixtures): void
1812
{
1913
$expectedFixtures = [];
2014
foreach ($expectedFixtureIndexes as $index) {
2115
$expectedFixtures[$index] = $this->getFixture($index);
2216
}
2317

24-
$this->assertSame($expectedFixtures, $actualFixtures);
18+
$this->assertEquals($expectedFixtures, $actualFixtures);
2519
}
2620

2721
protected function getFixture(int $index): array
2822
{
29-
return self::$fixtures[$index];
23+
return $this->getFixtures()[$index];
24+
}
25+
26+
protected function getFixtures(): array
27+
{
28+
return [
29+
['number' => 1, 'email' => 'foo@bar\\baz', 'balance' => 10.25, 'born_at' => null],
30+
['number' => 2, 'email' => 'bar@foo', 'balance' => 1.0, 'born_at' => null],
31+
['number' => 3, 'email' => 'seed@beat', 'balance' => 100.0, 'born_at' => null],
32+
['number' => 4, 'email' => 'the@best', 'balance' => 500.0, 'born_at' => null],
33+
['number' => 5, 'email' => 'test@test', 'balance' => 42.0, 'born_at' => new DateTimeImmutable('1990-01-01')],
34+
];
3035
}
3136
}

tests/Common/Reader/ReaderWithFilter/BaseReaderWithBetweenTestCase.php

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

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

7+
use DateTimeImmutable;
8+
use PHPUnit\Framework\Attributes\DataProvider;
79
use Yiisoft\Data\Reader\Filter\Between;
810
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
911

1012
abstract class BaseReaderWithBetweenTestCase extends BaseReaderTestCase
1113
{
12-
public function testWithReader(): void
14+
public static function dataWithReader(): iterable
1315
{
14-
$reader = $this->getReader()->withFilter(new Between('balance', 10.25, 100.0));
15-
$this->assertFixtures([0, 2, 4], $reader->read());
16+
yield 'float' => [new Between('balance', 10.25, 100.0), [1, 3, 5]];
17+
yield 'datetime' => [new Between('born_at', new DateTimeImmutable('1989-01-01'), new DateTimeImmutable('1991-01-01')), [5]];
18+
yield 'datetime 2' => [new Between('born_at', new DateTimeImmutable('1990-01-02'), new DateTimeImmutable('1990-01-03')), []];
19+
}
20+
21+
#[DataProvider('dataWithReader')]
22+
public function testWithReader(Between $filter, array $expectedFixtureNumbers): void
23+
{
24+
$expectedFixtureIndexes = array_map(
25+
static fn(int $number): int => $number - 1,
26+
$expectedFixtureNumbers,
27+
);
28+
$this->assertFixtures(
29+
$expectedFixtureIndexes,
30+
$this->getReader()->withFilter($filter)->read(),
31+
);
1632
}
1733
}

tests/Common/Reader/ReaderWithFilter/BaseReaderWithEqualsTestCase.php

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

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

7+
use DateTimeImmutable;
8+
use PHPUnit\Framework\Attributes\DataProvider;
79
use Yiisoft\Data\Reader\Filter\Equals;
810
use Yiisoft\Data\Tests\Common\Reader\BaseReaderTestCase;
911

1012
abstract class BaseReaderWithEqualsTestCase extends BaseReaderTestCase
1113
{
12-
public function testWithReader(): void
14+
public static function dataWithReader(): iterable
1315
{
14-
$reader = $this->getReader()->withFilter(new Equals('number', 2));
15-
$this->assertFixtures([1], $reader->read());
16+
yield 'integer' => [new Equals('number', 2), [2]];
17+
yield 'float' => [new Equals('balance', 10.25), [1]];
18+
yield 'string' => [new Equals('email', 'the@best'), [4]];
19+
yield 'datetime' => [new Equals('born_at', new DateTimeImmutable('1990-01-01')), [5]];
20+
}
21+
22+
#[DataProvider('dataWithReader')]
23+
public function testWithReader(Equals $filter, array $expectedFixtureNumbers): void
24+
{
25+
$expectedFixtureIndexes = array_map(
26+
static fn(int $number): int => $number - 1,
27+
$expectedFixtureNumbers,
28+
);
29+
$this->assertFixtures(
30+
$expectedFixtureIndexes,
31+
$this->getReader()->withFilter($filter)->read(),
32+
);
1633
}
1734
}

tests/Reader/Iterable/ReaderWithFilter/ReaderTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ trait ReaderTrait
1111
{
1212
protected function getReader(): DataReaderInterface
1313
{
14-
return new IterableDataReader(self::$fixtures);
14+
return new IterableDataReader($this->getFixtures());
1515
}
1616
}

0 commit comments

Comments
 (0)