diff --git a/tests/LazyRobotLoaderClassFinderTest.php b/tests/LazyRobotLoaderClassFinderTest.php index 04fc91b..ad822a5 100644 --- a/tests/LazyRobotLoaderClassFinderTest.php +++ b/tests/LazyRobotLoaderClassFinderTest.php @@ -16,7 +16,7 @@ public function testRebuildRobotLoaderOnlyOnFirstRun(): void ->setMethods(['rebuild']) ->getMock(); $robotLoader - ->expects($this->once()) + ->expects(self::once()) ->method('rebuild'); $lazyClassFinder = new LazyRobotLoaderClassFinder($robotLoader); diff --git a/tests/RobotLoaderClassFinderTest.php b/tests/RobotLoaderClassFinderTest.php index e8e57f9..2295a66 100644 --- a/tests/RobotLoaderClassFinderTest.php +++ b/tests/RobotLoaderClassFinderTest.php @@ -4,53 +4,65 @@ namespace Consistence\ClassFinder\RobotLoader; +use Generator; use Nette\Loaders\RobotLoader; +use PHPUnit\Framework\Assert; class RobotLoaderClassFinderTest extends \PHPUnit\Framework\TestCase { - public function testFindClass(): void + /** + * @return mixed[][]|\Generator + */ + public function findByInterfaceDataProvider(): Generator { - $classList = array_values($this->getRobotLoaderClassFinder()->findByInterface(ExtendingClass::class)); - - $this->assertContains(ExtendingClass::class, $classList); - $this->assertCount(1, $classList); - } - - public function testFindClassAndChildren(): void - { - $classList = array_values($this->getRobotLoaderClassFinder()->findByInterface(BaseClass::class)); - sort($classList); - - $expected = [ - BaseClass::class, - ExtendingClass::class, + yield 'class' => [ + 'interfaceName' => ExtendingClass::class, + 'expectedClassList' => [ + ExtendingClass::class, + ], + ]; + yield 'class and children' => [ + 'interfaceName' => BaseClass::class, + 'expectedClassList' => [ + BaseClass::class, + ExtendingClass::class, + ], + ]; + yield 'not implemented interface' => [ + 'interfaceName' => NotImplementedInterface::class, + 'expectedClassList' => [ + NotImplementedInterface::class, + ], + ]; + yield 'interface and implementations' => [ + 'interfaceName' => BaseInterface::class, + 'expectedClassList' => [ + BaseClass::class, + BaseInterface::class, + ExtendingClass::class, + ExtendingInterface::class, + ], ]; - - $this->assertEquals($expected, $classList); - } - - public function testFindInterface(): void - { - $classList = array_values($this->getRobotLoaderClassFinder()->findByInterface(NotImplementedInterface::class)); - - $this->assertContains(NotImplementedInterface::class, $classList); - $this->assertCount(1, $classList); } - public function testFindInterfaceAndImplementations(): void + /** + * @dataProvider findByInterfaceDataProvider + * + * @param string $interfaceName + * @param string[] $expectedClassList + */ + public function testFindByInterface( + string $interfaceName, + array $expectedClassList + ): void { - $classList = array_values($this->getRobotLoaderClassFinder()->findByInterface(BaseInterface::class)); - sort($classList); - - $expected = [ - BaseClass::class, - BaseInterface::class, - ExtendingClass::class, - ExtendingInterface::class, - ]; + $classList = array_values($this->getRobotLoaderClassFinder()->findByInterface($interfaceName)); - $this->assertEquals($expected, $classList); + foreach ($expectedClassList as $expectedClass) { + Assert::assertContains($expectedClass, $classList); + } + Assert::assertCount(count($expectedClassList), $classList); } private function getRobotLoaderClassFinder(): RobotLoaderClassFinder