From b81f4f77fdda14049cbcfb4338c316a1b38e3049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Hochd=C3=B6rfer?= Date: Sat, 26 Sep 2026 18:41:41 +0200 Subject: [PATCH] Rework unit tests --- ...ieldIsPartOfResourceClassValidUnitTest.php | 62 +++++++++++++++++++ ...lterIsPartOfResourceClassValidUnitTest.php | 62 +++++++++++++++++++ ...areGridNeedsResourceClassValidUnitTest.php | 46 ++++++++++++++ .../Sylius/Rule/Grid/data/grid_valid.php | 52 ++++++++++++++++ .../Sylius/Rule/Grid/data/grid_valid_attr.php | 18 ++++++ 5 files changed, 240 insertions(+) create mode 100644 tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFieldIsPartOfResourceClassValidUnitTest.php create mode 100644 tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFilterIsPartOfResourceClassValidUnitTest.php create mode 100644 tests/bitExpert/PHPStan/Sylius/Rule/Grid/ResourceAwareGridNeedsResourceClassValidUnitTest.php create mode 100644 tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid.php create mode 100644 tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid_attr.php diff --git a/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFieldIsPartOfResourceClassValidUnitTest.php b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFieldIsPartOfResourceClassValidUnitTest.php new file mode 100644 index 0000000..3aeffc0 --- /dev/null +++ b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFieldIsPartOfResourceClassValidUnitTest.php @@ -0,0 +1,62 @@ + + */ +class GridBuilderFieldIsPartOfResourceClassValidUnitTest extends RuleTestCase +{ + protected function getRule(): Rule + { + return new GridBuilderFieldIsPartOfResourceClass($this->createReflectionProvider()); + } + + protected function getCollectors(): array + { + $fields = []; + $fields[] = new StringFieldNode(); + $fields[] = new DateTimeFieldNode(); + $fields[] = new TwigFieldNode(); + $fields[] = new EnumFieldNode(); + $fields[] = new CallableFieldNode(); + $fields[] = new GenericFieldNode(); + + return [ + new CollectRessourceClassForGridClass(), + new CollectFieldsForGridClass(new DefaultFieldRegistry($fields)), + ]; + } + + #[Test] + public function ruleSucceedsWhenAllFieldsExist(): void + { + $this->analyse( + [__DIR__ . '/data/grid_valid.php'], + [], + ); + } +} diff --git a/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFilterIsPartOfResourceClassValidUnitTest.php b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFilterIsPartOfResourceClassValidUnitTest.php new file mode 100644 index 0000000..8595845 --- /dev/null +++ b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/GridBuilderFilterIsPartOfResourceClassValidUnitTest.php @@ -0,0 +1,62 @@ + + */ +class GridBuilderFilterIsPartOfResourceClassValidUnitTest extends RuleTestCase +{ + protected function getRule(): Rule + { + return new GridBuilderFilterIsPartOfResourceClass($this->createReflectionProvider()); + } + + protected function getCollectors(): array + { + $filters = []; + $filters[] = new EntityFilter(); + $filters[] = new EnumFilter(); + $filters[] = new ExistsFilter(); + $filters[] = new Filter(); + $filters[] = new SelectFilter(); + $filters[] = new StringFilter(); + + return [ + new CollectRessourceClassForGridClass(), + new CollectFilterForGridClass(new DefaultFilterRegistry($filters)), + ]; + } + + #[Test] + public function ruleSucceedsWhenAllFilterFieldsExist(): void + { + $this->analyse( + [__DIR__ . '/data/grid_valid.php'], + [], + ); + } +} diff --git a/tests/bitExpert/PHPStan/Sylius/Rule/Grid/ResourceAwareGridNeedsResourceClassValidUnitTest.php b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/ResourceAwareGridNeedsResourceClassValidUnitTest.php new file mode 100644 index 0000000..480391f --- /dev/null +++ b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/ResourceAwareGridNeedsResourceClassValidUnitTest.php @@ -0,0 +1,46 @@ + + */ +class ResourceAwareGridNeedsResourceClassValidUnitTest extends RuleTestCase +{ + protected function getRule(): Rule + { + return new ResourceAwareGridNeedsResourceClass($this->createReflectionProvider()); + } + + #[Test] + public function ruleSucceedsWhenResourceClassExistsViaMethod(): void + { + $this->analyse( + [__DIR__ . '/data/grid_valid.php'], + [], + ); + } + + #[Test] + public function ruleSucceedsWhenResourceClassExistsViaAttribute(): void + { + $this->analyse( + [__DIR__ . '/data/grid_valid_attr.php'], + [], + ); + } +} diff --git a/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid.php b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid.php new file mode 100644 index 0000000..d966d55 --- /dev/null +++ b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid.php @@ -0,0 +1,52 @@ +addField( + StringField::create('id')->setLabel('app.ui.id'), + ); + $gridBuilder->addField( + StringField::create('name')->setLabel('app.ui.name'), + ); + $gridBuilder->addField( + StringField::create('address.city')->setLabel('app.ui.address.city'), + ); + $gridBuilder->addField( + StringField::create('.')->setLabel('app.ui.some_calculated_field'), + ); + $gridBuilder->addFilter( + StringFilter::create('name'), + ); + $gridBuilder->addFilter( + EnumFilter::create('status', Status::class, false, 'status'), + ); + $gridBuilder->addFilter( + StringFilter::create('virtual-field', ['name', 'address.city']), + ); + } + + public function getResourceClass(): string + { + return Supplier::class; + } +} diff --git a/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid_attr.php b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid_attr.php new file mode 100644 index 0000000..1c3f49e --- /dev/null +++ b/tests/bitExpert/PHPStan/Sylius/Rule/Grid/data/grid_valid_attr.php @@ -0,0 +1,18 @@ +