diff --git a/.github/workflows/bc.yml b/.github/workflows/bc.yml index 15c4880a..5970206c 100644 --- a/.github/workflows/bc.yml +++ b/.github/workflows/bc.yml @@ -20,4 +20,4 @@ jobs: os: >- ['ubuntu-latest'] php: >- - ['8.0'] + ['8.1'] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8506ea11..3feaeef3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: - 'psalm.xml' push: + branches: ['master'] paths-ignore: - 'docs/**' - 'README.md' @@ -28,4 +29,4 @@ jobs: os: >- ['ubuntu-latest', 'windows-latest'] php: >- - ['8.0', '8.1'] + ['8.1', '8.2', '8.3'] diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-require-checker.yml index ae5893f5..a857bce6 100644 --- a/.github/workflows/composer-require-checker.yml +++ b/.github/workflows/composer-require-checker.yml @@ -11,6 +11,7 @@ on: - 'psalm.xml' push: + branches: ['master'] paths-ignore: - 'docs/**' - 'README.md' @@ -30,4 +31,4 @@ jobs: os: >- ['ubuntu-latest'] php: >- - ['8.0', '8.1'] + ['8.1', '8.2', '8.3'] diff --git a/.github/workflows/mutation.yml b/.github/workflows/mutation.yml index 806ab8ad..a0fbc13f 100644 --- a/.github/workflows/mutation.yml +++ b/.github/workflows/mutation.yml @@ -9,6 +9,7 @@ on: - 'psalm.xml' push: + branches: ['master'] paths-ignore: - 'docs/**' - 'README.md' diff --git a/.github/workflows/rector.yml b/.github/workflows/rector.yml index adacd735..35411d0a 100644 --- a/.github/workflows/rector.yml +++ b/.github/workflows/rector.yml @@ -14,8 +14,10 @@ name: rector jobs: rector: uses: yiisoft/actions/.github/workflows/rector.yml@master + secrets: + token: ${{ secrets.YIISOFT_GITHUB_TOKEN }} with: os: >- ['ubuntu-latest'] php: >- - ['8.0'] + ['8.3'] diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 483e4c55..e33eca86 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -10,6 +10,7 @@ on: - 'phpunit.xml.dist' push: + branches: ['master'] paths-ignore: - 'docs/**' - 'README.md' @@ -28,12 +29,4 @@ jobs: os: >- ['ubuntu-latest'] php: >- - ['8.1'] - psalm-php80: - uses: yiisoft/actions/.github/workflows/psalm.yml@master - with: - psalm-config: psalm-php80.xml - os: >- - ['ubuntu-latest'] - php: >- - ['8.0'] + ['8.1', '8.2', '8.3'] diff --git a/.gitignore b/.gitignore index ffca5ff0..db6cb742 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,4 @@ phpunit.phar # local phpunit config /phpunit.xml # phpunit cache -.phpunit.result.cache +/.phpunit.cache/* diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 61fb502d..1c9cd851 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -10,7 +10,7 @@ build: environment: php: - version: 8.0.18 + version: 8.1.26 ini: xdebug.mode: coverage diff --git a/CHANGELOG.md b/CHANGELOG.md index f0c94521..0a925aac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,10 @@ - New #150: Extract `withLimit()` from `ReadableDataInterface` into `LimitableDataInterface` (@vjik) - Enh #150: `PaginatorInterface` now extends `ReadableDataInterface` (@vjik) - Chg #151: Rename `isRequired()` method in `PaginatorInterface` to `isPaginationRequired()` (@vjik) -- New #153: Add `KeysetPaginator::withFilterCallback()` method that allows set closure for preparing filter passed to +- New #153, #154: Add `KeysetPaginator::withFilterCallback()` method that allows set closure for preparing filter passed to the data reader (@vjik) - New #153: Add `Compare::withValue()` method (@vjik) +- Chg #154: Raise minimum required PHP version to 8.1 (@vjik) ## 1.0.1 January 25, 2023 diff --git a/composer.json b/composer.json index c7c8ba7c..65086105 100644 --- a/composer.json +++ b/composer.json @@ -31,16 +31,16 @@ } ], "require": { - "php": "^8.0", + "php": "^8.1", "yiisoft/arrays": "^3.0" }, "require-dev": { - "maglnet/composer-require-checker": "^4.2", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.19.0", - "roave/infection-static-analysis-plugin": "^1.25", + "maglnet/composer-require-checker": "^4.7", + "phpunit/phpunit": "^10", + "rector/rector": "^0.19", + "roave/infection-static-analysis-plugin": "^1.34", "spatie/phpunit-watcher": "^1.23", - "vimeo/psalm": "^4.26|^5.4" + "vimeo/psalm": "^5.20" }, "autoload": { "psr-4": { diff --git a/phpunit.xml.dist b/phpunit.xml.dist index f9aba108..8860daec 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,17 +1,16 @@ - - @@ -23,9 +22,9 @@ - + - ./src + ./src - + diff --git a/psalm-php80.xml b/psalm-php80.xml deleted file mode 100644 index ba4ad097..00000000 --- a/psalm-php80.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - diff --git a/psalm.xml b/psalm.xml index 73ed7155..b48c894e 100644 --- a/psalm.xml +++ b/psalm.xml @@ -10,7 +10,11 @@ - + + + + + diff --git a/rector.php b/rector.php index 63713ce9..90fea6ba 100644 --- a/rector.php +++ b/rector.php @@ -4,6 +4,9 @@ use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector; use Rector\Config\RectorConfig; +use Rector\Php73\Rector\FuncCall\JsonThrowOnErrorRector; +use Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector; +use Rector\Php81\Rector\Property\ReadOnlyPropertyRector; use Rector\Set\ValueObject\LevelSetList; return static function (RectorConfig $rectorConfig): void { @@ -17,6 +20,12 @@ // define sets of rules $rectorConfig->sets([ - LevelSetList::UP_TO_PHP_80, + LevelSetList::UP_TO_PHP_81, + ]); + + $rectorConfig->skip([ + ClosureToArrowFunctionRector::class, + JsonThrowOnErrorRector::class, + ReadOnlyPropertyRector::class, ]); }; diff --git a/src/Paginator/KeysetFilterContext.php b/src/Paginator/KeysetFilterContext.php index ac0b6177..cb0c1fd9 100644 --- a/src/Paginator/KeysetFilterContext.php +++ b/src/Paginator/KeysetFilterContext.php @@ -7,10 +7,10 @@ final class KeysetFilterContext { public function __construct( - public string $field, - public string $value, - public int $sorting, - public bool $isReverse + public readonly string $field, + public readonly string $value, + public readonly int $sorting, + public readonly bool $isReverse ) { } } diff --git a/tests/Paginator/KeysetPaginatorTest.php b/tests/Paginator/KeysetPaginatorTest.php index 3b9647ae..1b34f86a 100644 --- a/tests/Paginator/KeysetPaginatorTest.php +++ b/tests/Paginator/KeysetPaginatorTest.php @@ -6,6 +6,7 @@ use ArrayIterator; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use RuntimeException; use stdClass; use Yiisoft\Arrays\ArrayHelper; @@ -128,7 +129,7 @@ public function withFilterHandlers(FilterHandlerInterface ...$filterHandlers): s public function testThrowsExceptionWhenReaderHasNoSort(): void { - $dataReader = new IterableDataReader($this->getDataSet()); + $dataReader = new IterableDataReader(self::getDataSet()); $this->expectException(RuntimeException::class); $this->expectExceptionMessage('Data sorting should be configured to work with keyset pagination.'); @@ -139,7 +140,7 @@ public function testThrowsExceptionWhenReaderHasNoSort(): void public function testThrowsExceptionWhenNotSorted(): void { $sort = Sort::only(['id', 'name']); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $this->expectException(RuntimeException::class); $this->expectExceptionMessage('Data should be always sorted to work with keyset pagination.'); @@ -150,7 +151,7 @@ public function testThrowsExceptionWhenNotSorted(): void public function testPageSizeCannotBeLessThanOne(): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = new KeysetPaginator($dataReader); $this->expectException(InvalidArgumentException::class); @@ -159,32 +160,30 @@ public function testPageSizeCannotBeLessThanOne(): void $paginator->withPageSize(0); } - public function onePageDataProvider(): array + public static function dataOnePage(): array { return [ [[], 1], [[], 2], [[], 3], - [$this->getDataSet([0]), 1], + [self::getDataSet([0]), 1], - [$this->getDataSet([0]), 2], - [$this->getDataSet([0, 1]), 2], + [self::getDataSet([0]), 2], + [self::getDataSet([0, 1]), 2], - [$this->getDataSet([0]), 3], - [$this->getDataSet([0, 1]), 3], - [$this->getDataSet([0, 1, 2]), 3], + [self::getDataSet([0]), 3], + [self::getDataSet([0, 1]), 3], + [self::getDataSet([0, 1, 2]), 3], - [$this->getDataSet([0]), 4], - [$this->getDataSet([0, 1]), 4], - [$this->getDataSet([0, 1, 2]), 4], - [$this->getDataSet([0, 1, 2, 3]), 4], + [self::getDataSet([0]), 4], + [self::getDataSet([0, 1]), 4], + [self::getDataSet([0, 1, 2]), 4], + [self::getDataSet([0, 1, 2, 3]), 4], ]; } - /** - * @dataProvider onePageDataProvider - */ + #[DataProvider('dataOnePage')] public function testOnePage(array $dataSet, int $pageSize): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); @@ -212,10 +211,10 @@ public function testEmptyData(): void public function testReadFirstPage(): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); - $expected = $this->getDataSet([0, 1]); + $expected = self::getDataSet([0, 1]); $this->assertSame($expected, $this->iterableToArray($paginator->read())); $last = end($expected); @@ -240,7 +239,7 @@ public function testReadObjectsWithPublicProperties(): void $this->assertTrue($paginator->isOnFirstPage()); } - public function readObjectsWithGettersDataProvider(): array + public static function dataReadObjectsWithGetters(): array { return [ 'order by id field' => ['getId()', 'getId'], @@ -248,9 +247,7 @@ public function readObjectsWithGettersDataProvider(): array ]; } - /** - * @dataProvider readObjectsWithGettersDataProvider - */ + #[DataProvider('dataReadObjectsWithGetters')] public function testReadObjectsWithGetters(string $orderByField, string $getter): void { $sort = Sort::only(['getId()', 'getName()', 'getCreatedAt()'])->withOrderString($orderByField); @@ -272,14 +269,14 @@ public function testReadSecondPage(): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet())) + $dataReader = (new IterableDataReader(self::getDataSet())) ->withSort($sort); $paginator = (new KeysetPaginator($dataReader)) ->withPageSize(2) ->withNextPageToken('2'); - $expected = $this->getDataSet([2, 3]); + $expected = self::getDataSet([2, 3]); $this->assertSame($expected, array_values((array) $paginator->read())); $last = end($expected); @@ -289,21 +286,21 @@ public function testReadSecondPage(): void public function testReadSecondPageOrderedByName(): void { $sort = Sort::only(['id', 'name'])->withOrderString('name'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader)) ->withPageSize(2) ->withNextPageToken('Agent J') ; - $expected = $this->getDataSet([2, 0]); + $expected = self::getDataSet([2, 0]); $this->assertSame($expected, array_values($this->iterableToArray($paginator->read()))); $last = end($expected); $this->assertSame((string)$last['name'], $paginator->getNextPageToken()); } - public function dataReadOne(): array + public static function dataReadOne(): array { $data = []; @@ -328,9 +325,7 @@ public function dataReadOne(): array return $data; } - /** - * @dataProvider dataReadOne - */ + #[DataProvider('dataReadOne')] public function testReadOne(mixed $expected, KeysetPaginator $paginator): void { $result = $paginator->readOne(); @@ -340,13 +335,13 @@ public function testReadOne(mixed $expected, KeysetPaginator $paginator): void public function testBackwardPagination(): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader)) ->withPageSize(2) ->withPreviousPageToken('5') ; - $expected = $this->getDataSet([1, 2]); + $expected = self::getDataSet([1, 2]); $read = array_values($this->iterableToArray($paginator->read())); $this->assertSame($expected, $read); @@ -359,13 +354,13 @@ public function testBackwardPagination(): void public function testForwardAndBackwardPagination(): void { $sort = Sort::only(['id', 'name'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader)) ->withPageSize(2) ->withNextPageToken('2') ; - $expected = $this->getDataSet([2, 3]); + $expected = self::getDataSet([2, 3]); $read = array_values($this->iterableToArray($paginator->read())); $this->assertSame($expected, $read); @@ -380,7 +375,7 @@ public function testForwardAndBackwardPagination(): void ->withPageSize(2) ->withPreviousPageToken($paginator->getPreviousPageToken()); - $expected = $this->getDataSet([0, 1]); + $expected = self::getDataSet([0, 1]); $read = array_values($this->iterableToArray($paginator->read())); $this->assertSame($expected, $read); @@ -392,7 +387,7 @@ public function testForwardAndBackwardPagination(): void public function testIsOnFirstPage(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); $this->assertTrue($paginator->isOnFirstPage()); @@ -402,7 +397,7 @@ public function testIsOnFirstPage(): void public function testIsOnLastPage(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); $paginator = $paginator->withNextPageToken('6'); @@ -425,7 +420,7 @@ public function testIsOnLastPage(): void public function testIsPaginationRequired(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = new KeysetPaginator($dataReader); $this->assertFalse($paginator->isPaginationRequired()); @@ -438,7 +433,7 @@ public function testIsPaginationRequired(): void public function testCurrentPageSize(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); $this->assertSame(2, $paginator->getCurrentPageSize()); @@ -464,7 +459,7 @@ public function testCurrentPageSize(): void public function testReadCache(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataSet = new class ($this->getDataSet()) extends ArrayIterator { + $dataSet = new class (self::getDataSet()) extends ArrayIterator { private int $rewindCounter = 0; public function rewind(): void @@ -512,7 +507,7 @@ public function getRewindCounter(): int public function testTokenResults(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); $this->assertNotNull($paginator->getNextPageToken()); @@ -558,7 +553,7 @@ public function testTokenResults(): void public function testDefaultPageSize(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = new KeysetPaginator($dataReader); $this->assertSame(10, $paginator->getPageSize()); @@ -568,14 +563,14 @@ public function testDefaultPageSize(): void public function testCustomPageSize(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPageSize(2); $this->assertSame(2, $paginator->getPageSize()); $this->assertCount(2, $paginator->read()); } - private function getDataSet(array $keys = null): array + private static function getDataSet(array $keys = null): array { if ($keys === null) { return self::DEFAULT_DATASET; @@ -689,7 +684,7 @@ public function getCreatedAt(): int public function testGetSort(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader)); $this->assertInstanceOf(Sort::class, $paginator->getSort()); @@ -698,7 +693,7 @@ public function testGetSort(): void public function testWithPreviousPageTokenAndIsOnFirstPageSameTrue(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withPreviousPageToken('1'); $this->assertTrue($paginator->isOnFirstPage()); @@ -707,11 +702,11 @@ public function testWithPreviousPageTokenAndIsOnFirstPageSameTrue(): void public function testCloneClearValues(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = new KeysetPaginator($dataReader); $paginator->read(); - $this->assertSame($this->getDataSet(), $this->getInaccessibleProperty($paginator, 'readCache')); + $this->assertSame(self::getDataSet(), $this->getInaccessibleProperty($paginator, 'readCache')); $this->assertSame('1', $this->getInaccessibleProperty($paginator, 'currentFirstValue')); $this->assertSame('6', $this->getInaccessibleProperty($paginator, 'currentLastValue')); @@ -735,7 +730,7 @@ public function testCloneClearValues(): void public function testImmutability(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = new KeysetPaginator($dataReader); $this->assertNotSame($paginator, $paginator->withNextPageToken('1')); @@ -747,7 +742,7 @@ public function testImmutability(): void public function testGetPreviousPageExistForCoverage(): void { $sort = Sort::only(['id'])->withOrderString('id'); - $dataReader = (new IterableDataReader($this->getDataSet()))->withSort($sort); + $dataReader = (new IterableDataReader(self::getDataSet()))->withSort($sort); $paginator = (new KeysetPaginator($dataReader))->withNextPageToken('1'); @@ -952,9 +947,7 @@ public static function dataPageTypeWithPreviousPageToken(): array ]; } - /** - * @dataProvider dataPageTypeWithPreviousPageToken - */ + #[DataProvider('dataPageTypeWithPreviousPageToken')] public function testPageTypeWithPreviousPageToken( bool $expectedIsOnFirstPage, bool $expectedIsOnLastPage, @@ -1017,9 +1010,7 @@ public static function dataPageTypeWithNextPageToken(): array ]; } - /** - * @dataProvider dataPageTypeWithNextPageToken - */ + #[DataProvider('dataPageTypeWithNextPageToken')] public function testPageTypeWithNextPageToken( bool $expectedIsOnFirstPage, bool $expectedIsOnLastPage, diff --git a/tests/Paginator/OffsetPaginatorTest.php b/tests/Paginator/OffsetPaginatorTest.php index 3f69c5ba..b615494f 100644 --- a/tests/Paginator/OffsetPaginatorTest.php +++ b/tests/Paginator/OffsetPaginatorTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Paginator; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Paginator\OffsetPaginator; use Yiisoft\Data\Paginator\PaginatorException; use Yiisoft\Data\Paginator\PaginatorInterface; @@ -293,7 +294,7 @@ public function testReadLastPage(): void $this->assertSame($expected, array_values($this->iterableToArray($paginator->read()))); } - public function dataReadOne(): array + public static function dataReadOne(): array { $data = []; @@ -315,9 +316,7 @@ public function dataReadOne(): array return $data; } - /** - * @dataProvider dataReadOne - */ + #[DataProvider('dataReadOne')] public function testReadOne(mixed $expected, OffsetPaginator $paginator): void { $result = $paginator->readOne(); diff --git a/tests/Reader/Filter/AllTest.php b/tests/Reader/Filter/AllTest.php index 8b371538..beb78d04 100644 --- a/tests/Reader/Filter/AllTest.php +++ b/tests/Reader/Filter/AllTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\Filter; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\All; use Yiisoft\Data\Reader\Filter\GreaterThan; use Yiisoft\Data\Reader\Filter\LessThan; @@ -67,9 +68,7 @@ public function testWithCriteriaArrayOverridesConstructor(): void ); } - /** - * @dataProvider invalidFilterDataProvider - */ + #[DataProvider('invalidFilterDataProvider')] public function testWithCriteriaArrayFailForInvalidFilter($filter): void { $this->expectException(InvalidArgumentException::class); @@ -78,9 +77,7 @@ public function testWithCriteriaArrayFailForInvalidFilter($filter): void (new All())->withCriteriaArray([['=', 'test', 1], $filter]); } - /** - * @dataProvider invalidFilterOperatorDataProvider - */ + #[DataProvider('invalidFilterOperatorDataProvider')] public function testWithCriteriaArrayFailForInvalidFilterOperator(array $filter): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/AnyTest.php b/tests/Reader/Filter/AnyTest.php index e8c01f32..bd93d6d4 100644 --- a/tests/Reader/Filter/AnyTest.php +++ b/tests/Reader/Filter/AnyTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\Filter; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\Any; use Yiisoft\Data\Reader\Filter\GreaterThan; use Yiisoft\Data\Reader\Filter\LessThan; @@ -67,9 +68,7 @@ public function testWithCriteriaArrayOverridesConstructor(): void ); } - /** - * @dataProvider invalidFilterDataProvider - */ + #[DataProvider('invalidFilterDataProvider')] public function testWithCriteriaArrayFailForInvalidFilter(mixed $filter): void { $this->expectException(InvalidArgumentException::class); @@ -81,9 +80,7 @@ public function testWithCriteriaArrayFailForInvalidFilter(mixed $filter): void ]); } - /** - * @dataProvider invalidFilterOperatorDataProvider - */ + #[DataProvider('invalidFilterOperatorDataProvider')] public function testWithCriteriaArrayFailForInvalidFilterOperator(array $filter): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/BetweenTest.php b/tests/Reader/Filter/BetweenTest.php index c79c9d1f..5fa94aa2 100644 --- a/tests/Reader/Filter/BetweenTest.php +++ b/tests/Reader/Filter/BetweenTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\Between; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class BetweenTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new Between('test', $value, $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['between', 'test', $value, $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidFirstValue($value): void { $this->expectException(InvalidArgumentException::class); @@ -39,9 +36,7 @@ public function testConstructorFailForInvalidFirstValue($value): void new Between('test', $value, 2); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidSecondValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/EqualsTest.php b/tests/Reader/Filter/EqualsTest.php index e08b4e24..71671ed7 100644 --- a/tests/Reader/Filter/EqualsTest.php +++ b/tests/Reader/Filter/EqualsTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\Equals; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class EqualsTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new Equals('test', $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['=', 'test', $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/GreaterThanOrEqualTest.php b/tests/Reader/Filter/GreaterThanOrEqualTest.php index ee6a7170..1b610501 100644 --- a/tests/Reader/Filter/GreaterThanOrEqualTest.php +++ b/tests/Reader/Filter/GreaterThanOrEqualTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\GreaterThanOrEqual; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class GreaterThanOrEqualTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new GreaterThanOrEqual('test', $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['>=', 'test', $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidScalarValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/GreaterThanTest.php b/tests/Reader/Filter/GreaterThanTest.php index 7afa9fdd..4fa33707 100644 --- a/tests/Reader/Filter/GreaterThanTest.php +++ b/tests/Reader/Filter/GreaterThanTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\GreaterThan; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class GreaterThanTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new GreaterThan('test', $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['>', 'test', $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidScalarValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/InTest.php b/tests/Reader/Filter/InTest.php index 14a996bc..4fdf94ce 100644 --- a/tests/Reader/Filter/InTest.php +++ b/tests/Reader/Filter/InTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\Filter; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\In; use Yiisoft\Data\Tests\TestCase; @@ -17,9 +18,7 @@ public function testToArray(): void $this->assertSame(['in', 'test', [1, 2]], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidScalarValue($value): void { $type = get_debug_type($value); diff --git a/tests/Reader/Filter/LessThanOrEqualTest.php b/tests/Reader/Filter/LessThanOrEqualTest.php index 76a22e7c..0af2986c 100644 --- a/tests/Reader/Filter/LessThanOrEqualTest.php +++ b/tests/Reader/Filter/LessThanOrEqualTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\LessThanOrEqual; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class LessThanOrEqualTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new LessThanOrEqual('test', $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['<=', 'test', $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidScalarValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/Filter/LessThanTest.php b/tests/Reader/Filter/LessThanTest.php index f8405bb0..2d40735b 100644 --- a/tests/Reader/Filter/LessThanTest.php +++ b/tests/Reader/Filter/LessThanTest.php @@ -6,6 +6,7 @@ use DateTimeInterface; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\LessThan; use Yiisoft\Data\Tests\TestCase; @@ -13,9 +14,7 @@ final class LessThanTest extends TestCase { - /** - * @dataProvider scalarAndDataTimeInterfaceValueDataProvider - */ + #[DataProvider('scalarAndDataTimeInterfaceValueDataProvider')] public function testToArray($value): void { $filter = new LessThan('test', $value); @@ -23,9 +22,7 @@ public function testToArray($value): void $this->assertSame(['<', 'test', $value], $filter->toCriteriaArray()); } - /** - * @dataProvider invalidScalarValueDataProvider - */ + #[DataProvider('invalidScalarValueDataProvider')] public function testConstructorFailForInvalidScalarValue($value): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Reader/IterableDataReaderTest.php b/tests/Reader/IterableDataReaderTest.php index 68e46d3b..a5355830 100644 --- a/tests/Reader/IterableDataReaderTest.php +++ b/tests/Reader/IterableDataReaderTest.php @@ -8,6 +8,7 @@ use DateTimeInterface; use Generator; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use RuntimeException; use Yiisoft\Data\Reader\DataReaderException; use Yiisoft\Data\Reader\Filter\All; @@ -440,9 +441,7 @@ public function match(array|object $item, array $arguments, array $iterableFilte $this->assertSame($expected, array_values($this->iterableToArray($dataReader->read()))); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFilterFailIfOperatorIsNotString($operator): void { $reader = (new IterableDataReader(self::DEFAULT_DATASET)) diff --git a/tests/Reader/IterableHandler/AllTest.php b/tests/Reader/IterableHandler/AllTest.php index c888f106..3cd9618b 100644 --- a/tests/Reader/IterableHandler/AllTest.php +++ b/tests/Reader/IterableHandler/AllTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use stdClass; use Yiisoft\Data\Reader\Iterable\FilterHandler\AllHandler; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsHandler; @@ -15,7 +16,7 @@ final class AllTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [ @@ -51,9 +52,7 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $arguments, array $filterHandlers): void { $processor = new AllHandler(); @@ -66,7 +65,7 @@ public function testMatch(bool $expected, array $arguments, array $filterHandler $this->assertSame($expected, $processor->match($item, $arguments, $filterHandlers)); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -76,9 +75,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -87,9 +84,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new AllHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidArrayValueDataProvider - */ + #[DataProvider('invalidArrayValueDataProvider')] public function testMatchFailIfSubFiltersIsNotArray($subFilters): void { $type = get_debug_type($subFilters); @@ -100,9 +95,7 @@ public function testMatchFailIfSubFiltersIsNotArray($subFilters): void (new AllHandler())->match(['id' => 1], [$subFilters], []); } - /** - * @dataProvider invalidArrayValueDataProvider - */ + #[DataProvider('invalidArrayValueDataProvider')] public function testMatchFailIfSubFilterIsNotArray($subFilters): void { $type = get_debug_type($subFilters); @@ -121,16 +114,14 @@ public function testMatchFailIfArgumentValueIsEmptyArray(): void (new AllHandler())->match(['id' => 1], [[[]]], []); } - public function invalidFilterOperatorDataProvider(): array + public static function invalidFilterOperatorDataProvider(): array { $data = parent::invalidFilterOperatorDataProvider(); unset($data['array'], $data['empty-string']); return $data; } - /** - * @dataProvider invalidFilterOperatorDataProvider - */ + #[DataProvider('invalidFilterOperatorDataProvider')] public function testMatchFailForInvalidFilterOperator(array $filter): void { $type = get_debug_type($filter[0]); diff --git a/tests/Reader/IterableHandler/AnyTest.php b/tests/Reader/IterableHandler/AnyTest.php index f3441055..0e74e41e 100644 --- a/tests/Reader/IterableHandler/AnyTest.php +++ b/tests/Reader/IterableHandler/AnyTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use stdClass; use Yiisoft\Data\Reader\Iterable\FilterHandler\AnyHandler; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsHandler; @@ -15,7 +16,7 @@ final class AnyTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [ @@ -56,9 +57,7 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $arguments, array $filterHandlers): void { $handler = new AnyHandler(); @@ -71,7 +70,7 @@ public function testMatch(bool $expected, array $arguments, array $filterHandler $this->assertSame($expected, $handler->match($item, $arguments, $filterHandlers)); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -81,9 +80,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -92,9 +89,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new AnyHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidArrayValueDataProvider - */ + #[DataProvider('invalidArrayValueDataProvider')] public function testMatchFailIfSubFiltersIsNotArray($subFilters): void { $type = get_debug_type($subFilters); @@ -105,9 +100,7 @@ public function testMatchFailIfSubFiltersIsNotArray($subFilters): void (new AnyHandler())->match(['id' => 1], [$subFilters], []); } - /** - * @dataProvider invalidArrayValueDataProvider - */ + #[DataProvider('invalidArrayValueDataProvider')] public function testMatchFailIfSubFilterIsNotArray($subFilters): void { $type = get_debug_type($subFilters); @@ -126,16 +119,14 @@ public function testMatchFailIfArgumentValueIsEmptyArray(): void (new AnyHandler())->match(['id' => 1], [[[]]], []); } - public function invalidFilterOperatorDataProvider(): array + public static function invalidFilterOperatorDataProvider(): array { $data = parent::invalidFilterOperatorDataProvider(); unset($data['array'], $data['empty-string']); return $data; } - /** - * @dataProvider invalidFilterOperatorDataProvider - */ + #[DataProvider('invalidFilterOperatorDataProvider')] public function testMatchFailForInvalidFilterOperator(array $filter): void { $type = get_debug_type($filter[0]); diff --git a/tests/Reader/IterableHandler/BetweenTest.php b/tests/Reader/IterableHandler/BetweenTest.php index ab834645..88cfc64e 100644 --- a/tests/Reader/IterableHandler/BetweenTest.php +++ b/tests/Reader/IterableHandler/BetweenTest.php @@ -6,6 +6,7 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\Between; use Yiisoft\Data\Reader\Iterable\FilterHandler\BetweenHandler; use Yiisoft\Data\Reader\Iterable\IterableDataReader; @@ -14,7 +15,7 @@ final class BetweenTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 42, 47]], @@ -25,9 +26,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new BetweenHandler(); @@ -40,7 +39,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:42'), new DateTimeImmutable('2022-02-22 16:00:47')]], @@ -51,9 +50,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new BetweenHandler(); @@ -66,7 +63,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -76,9 +73,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -87,9 +82,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new BetweenHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/EqualsEmptyTest.php b/tests/Reader/IterableHandler/EqualsEmptyTest.php index 0e7812a7..37b32358 100644 --- a/tests/Reader/IterableHandler/EqualsEmptyTest.php +++ b/tests/Reader/IterableHandler/EqualsEmptyTest.php @@ -5,12 +5,13 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsEmptyHandler; use Yiisoft\Data\Tests\TestCase; final class EqualsEmptyTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [true, ['value' => null]], @@ -25,15 +26,13 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $item): void { $this->assertSame($expected, (new EqualsEmptyHandler())->match($item, ['value'], [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -43,9 +42,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -54,9 +51,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new EqualsEmptyHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/EqualsNullTest.php b/tests/Reader/IterableHandler/EqualsNullTest.php index e560255e..2549cdba 100644 --- a/tests/Reader/IterableHandler/EqualsNullTest.php +++ b/tests/Reader/IterableHandler/EqualsNullTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\EqualsNull; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsNullHandler; use Yiisoft\Data\Reader\Iterable\IterableDataReader; @@ -13,7 +14,7 @@ final class EqualsNullTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [true, ['value' => null]], @@ -27,15 +28,13 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $item): void { $this->assertSame($expected, (new EqualsNullHandler())->match($item, ['value'], [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -45,9 +44,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -56,9 +53,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new EqualsNullHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/EqualsTest.php b/tests/Reader/IterableHandler/EqualsTest.php index 1432025c..9257edbd 100644 --- a/tests/Reader/IterableHandler/EqualsTest.php +++ b/tests/Reader/IterableHandler/EqualsTest.php @@ -6,6 +6,7 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Filter\Equals; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsHandler; use Yiisoft\Data\Reader\Iterable\IterableDataReader; @@ -14,7 +15,7 @@ final class EqualsTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 45]], @@ -24,9 +25,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new EqualsHandler(); @@ -39,7 +38,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:45')]], @@ -48,9 +47,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new EqualsHandler(); @@ -63,7 +60,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -73,9 +70,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -84,9 +79,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new EqualsHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/GreaterThanOrEqualTest.php b/tests/Reader/IterableHandler/GreaterThanOrEqualTest.php index 053c628c..07492fd0 100644 --- a/tests/Reader/IterableHandler/GreaterThanOrEqualTest.php +++ b/tests/Reader/IterableHandler/GreaterThanOrEqualTest.php @@ -6,12 +6,13 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\GreaterThanOrEqualHandler; use Yiisoft\Data\Tests\TestCase; final class GreaterThanOrEqualTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 44]], @@ -21,9 +22,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new GreaterThanOrEqualHandler(); @@ -36,7 +35,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:44')]], @@ -45,9 +44,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new GreaterThanOrEqualHandler(); @@ -60,7 +57,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -70,9 +67,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -81,9 +76,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new GreaterThanOrEqualHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/GreaterThanTest.php b/tests/Reader/IterableHandler/GreaterThanTest.php index dabbab25..f64cf38d 100644 --- a/tests/Reader/IterableHandler/GreaterThanTest.php +++ b/tests/Reader/IterableHandler/GreaterThanTest.php @@ -6,12 +6,13 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\GreaterThanHandler; use Yiisoft\Data\Tests\TestCase; final class GreaterThanTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 44]], @@ -21,9 +22,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new GreaterThanHandler(); @@ -36,7 +35,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:44')]], @@ -45,9 +44,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new GreaterThanHandler(); @@ -60,7 +57,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -70,9 +67,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -81,9 +76,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new GreaterThanHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/InTest.php b/tests/Reader/IterableHandler/InTest.php index 6f6ca553..0ea1053a 100644 --- a/tests/Reader/IterableHandler/InTest.php +++ b/tests/Reader/IterableHandler/InTest.php @@ -5,12 +5,13 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\InHandler; use Yiisoft\Data\Tests\TestCase; final class InTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [true, ['value', [44, 45, 46]]], @@ -19,9 +20,7 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $arguments): void { $processor = new InHandler(); @@ -34,7 +33,7 @@ public function testMatch(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -44,9 +43,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -55,9 +52,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new InHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/LessThanOrEqualTest.php b/tests/Reader/IterableHandler/LessThanOrEqualTest.php index 7a669b0a..fe3e08eb 100644 --- a/tests/Reader/IterableHandler/LessThanOrEqualTest.php +++ b/tests/Reader/IterableHandler/LessThanOrEqualTest.php @@ -6,12 +6,13 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\LessThanOrEqualHandler; use Yiisoft\Data\Tests\TestCase; final class LessThanOrEqualTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 46]], @@ -21,9 +22,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new LessThanOrEqualHandler(); @@ -36,7 +35,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:46')]], @@ -45,9 +44,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new LessThanOrEqualHandler(); @@ -60,7 +57,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -70,9 +67,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -81,9 +76,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new LessThanOrEqualHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/LessThanTest.php b/tests/Reader/IterableHandler/LessThanTest.php index 91919a3a..0a3f1d17 100644 --- a/tests/Reader/IterableHandler/LessThanTest.php +++ b/tests/Reader/IterableHandler/LessThanTest.php @@ -6,12 +6,13 @@ use DateTimeImmutable; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\LessThanHandler; use Yiisoft\Data\Tests\TestCase; final class LessThanTest extends TestCase { - public function matchScalarDataProvider(): array + public static function matchScalarDataProvider(): array { return [ [true, ['value', 46]], @@ -21,9 +22,7 @@ public function matchScalarDataProvider(): array ]; } - /** - * @dataProvider matchScalarDataProvider - */ + #[DataProvider('matchScalarDataProvider')] public function testMatchScalar(bool $expected, array $arguments): void { $processor = new LessThanHandler(); @@ -36,7 +35,7 @@ public function testMatchScalar(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function matchDateTimeInterfaceDataProvider(): array + public static function matchDateTimeInterfaceDataProvider(): array { return [ [true, ['value', new DateTimeImmutable('2022-02-22 16:00:46')]], @@ -45,9 +44,7 @@ public function matchDateTimeInterfaceDataProvider(): array ]; } - /** - * @dataProvider matchDateTimeInterfaceDataProvider - */ + #[DataProvider('matchDateTimeInterfaceDataProvider')] public function testMatchDateTimeInterface(bool $expected, array $arguments): void { $processor = new LessThanHandler(); @@ -60,7 +57,7 @@ public function testMatchDateTimeInterface(bool $expected, array $arguments): vo $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -70,9 +67,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -81,9 +76,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new LessThanHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/LikeTest.php b/tests/Reader/IterableHandler/LikeTest.php index 0d5a244c..953c59d9 100644 --- a/tests/Reader/IterableHandler/LikeTest.php +++ b/tests/Reader/IterableHandler/LikeTest.php @@ -5,12 +5,13 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use Yiisoft\Data\Reader\Iterable\FilterHandler\LikeHandler; use Yiisoft\Data\Tests\TestCase; final class LikeTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [true, ['value', 'Great Cat Fighter']], @@ -20,9 +21,7 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $arguments): void { $processor = new LikeHandler(); @@ -35,7 +34,7 @@ public function testMatch(bool $expected, array $arguments): void $this->assertSame($expected, $processor->match($item, $arguments, [])); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -45,9 +44,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -56,9 +53,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new LikeHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidStringValueDataProvider - */ + #[DataProvider('invalidStringValueDataProvider')] public function testMatchFailForInvalidFieldValue($field): void { $type = get_debug_type($field); diff --git a/tests/Reader/IterableHandler/NotTest.php b/tests/Reader/IterableHandler/NotTest.php index 56ca8624..b649f506 100644 --- a/tests/Reader/IterableHandler/NotTest.php +++ b/tests/Reader/IterableHandler/NotTest.php @@ -5,6 +5,7 @@ namespace Yiisoft\Data\Tests\Reader\IterableHandler; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use stdClass; use Yiisoft\Data\Reader\Iterable\FilterHandler\EqualsHandler; use Yiisoft\Data\Reader\Iterable\FilterHandler\NotHandler; @@ -13,7 +14,7 @@ final class NotTest extends TestCase { - public function matchDataProvider(): array + public static function matchDataProvider(): array { return [ [true, [['=', 'value', 44]], ['=' => new EqualsHandler()]], @@ -23,9 +24,7 @@ public function matchDataProvider(): array ]; } - /** - * @dataProvider matchDataProvider - */ + #[DataProvider('matchDataProvider')] public function testMatch(bool $expected, array $arguments, array $filterHandlers): void { $processor = new NotHandler(); @@ -38,7 +37,7 @@ public function testMatch(bool $expected, array $arguments, array $filterHandler $this->assertSame($expected, $processor->match($item, $arguments, $filterHandlers)); } - public function invalidCountArgumentsDataProvider(): array + public static function invalidCountArgumentsDataProvider(): array { return [ 'zero' => [[]], @@ -48,9 +47,7 @@ public function invalidCountArgumentsDataProvider(): array ]; } - /** - * @dataProvider invalidCountArgumentsDataProvider - */ + #[DataProvider('invalidCountArgumentsDataProvider')] public function testMatchFailForInvalidCountArguments($arguments): void { $this->expectException(InvalidArgumentException::class); @@ -59,9 +56,7 @@ public function testMatchFailForInvalidCountArguments($arguments): void (new NotHandler())->match(['id' => 1], $arguments, []); } - /** - * @dataProvider invalidArrayValueDataProvider - */ + #[DataProvider('invalidArrayValueDataProvider')] public function testMatchFailIfArgumentValueIsNotArray($value): void { $type = get_debug_type($value); @@ -80,16 +75,14 @@ public function testMatchFailIfArgumentValueIsEmptyArray(): void (new NotHandler())->match(['id' => 1], [[]], []); } - public function invalidFilterOperatorDataProvider(): array + public static function invalidFilterOperatorDataProvider(): array { $data = parent::invalidFilterOperatorDataProvider(); unset($data['array'], $data['empty-string']); return $data; } - /** - * @dataProvider invalidFilterOperatorDataProvider - */ + #[DataProvider('invalidFilterOperatorDataProvider')] public function testMatchFailForInvalidFilterOperator(array $filter): void { $type = get_debug_type($filter[0]); diff --git a/tests/Support/CustomFilter/DigitalHandler.php b/tests/Support/CustomFilter/DigitalHandler.php index 743a5ec2..6a5a6b89 100644 --- a/tests/Support/CustomFilter/DigitalHandler.php +++ b/tests/Support/CustomFilter/DigitalHandler.php @@ -16,6 +16,6 @@ public function getOperator(): string public function match(object|array $item, array $arguments, array $iterableFilterHandlers): bool { - return ctype_digit(ArrayHelper::getValue($item, $arguments[0])); + return ctype_digit((string) ArrayHelper::getValue($item, $arguments[0])); } } diff --git a/tests/TestCase.php b/tests/TestCase.php index 3bc193fc..6f4efed4 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -15,7 +15,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { - public function invalidArrayValueDataProvider(): array + public static function invalidArrayValueDataProvider(): array { return [ 'bool-true' => [true], @@ -29,7 +29,7 @@ public function invalidArrayValueDataProvider(): array ]; } - public function invalidStringValueDataProvider(): array + public static function invalidStringValueDataProvider(): array { return [ 'array' => [[]], @@ -43,7 +43,7 @@ public function invalidStringValueDataProvider(): array ]; } - public function invalidFilterDataProvider(): array + public static function invalidFilterDataProvider(): array { return [ 'callback' => [fn () => null], @@ -55,7 +55,7 @@ public function invalidFilterDataProvider(): array ]; } - public function invalidFilterOperatorDataProvider(): array + public static function invalidFilterOperatorDataProvider(): array { return [ 'array' => [[[]]], @@ -68,7 +68,7 @@ public function invalidFilterOperatorDataProvider(): array ]; } - public function invalidScalarValueDataProvider(): array + public static function invalidScalarValueDataProvider(): array { return [ 'array' => [[]], @@ -78,7 +78,7 @@ public function invalidScalarValueDataProvider(): array ]; } - public function scalarAndDataTimeInterfaceValueDataProvider(): array + public static function scalarAndDataTimeInterfaceValueDataProvider(): array { return [ 'bool-true' => [true], @@ -92,8 +92,6 @@ public function scalarAndDataTimeInterfaceValueDataProvider(): array /** * Gets an inaccessible object property. - * - * @return mixed */ protected function getInaccessibleProperty(object $object, string $propertyName): mixed { @@ -115,8 +113,6 @@ protected function getInaccessibleProperty(object $object, string $propertyName) * Invokes an inaccessible method. * * @throws ReflectionException - * - * @return mixed */ protected function invokeMethod(object $object, string $method, array $args = []): mixed {