From b769e2d63990cf979f0c66ec11504db4cd466fe4 Mon Sep 17 00:00:00 2001 From: core23 Date: Tue, 30 Jul 2019 18:45:04 +0200 Subject: [PATCH] [TEST] Fixed phpstan findings --- phpstan.neon | 6 +++++ .../DependencyInjection/Configuration.php | 2 +- src/Test/ORM/EntityManagerMockFactory.php | 7 ++++-- .../Bundle/Core23DoctrineBundleTest.php | 8 ------- .../Core23DoctrineExtensionTest.php | 13 ++++++++++- .../ORM/ConfirmableListenerTest.php | 8 ------- .../ORM/DeletableListenerTest.php | 8 ------- .../ORM/LifecycleDateListenerTest.php | 23 +++++++++++-------- .../ORM/SortableListenerTest.php | 23 +++++++++++-------- .../ORM/TablePrefixEventListenerTest.php | 8 ------- .../ORM/UniqueActiveListenerTest.php | 23 +++++++++++-------- tests/Model/Traits/ConfirmableTraitTest.php | 4 ++++ tests/Model/Traits/DeleteableTraitTest.php | 4 ++++ .../Traits/LifecycleDateTimeTraitTest.php | 4 ++++ tests/Model/Traits/SortableTraitTest.php | 4 ++++ 15 files changed, 79 insertions(+), 66 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 0a52da33..a583036f 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -8,5 +8,11 @@ parameters: # Symfony DI - '#Cannot call method end\(\) on Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\|null.#' + - "/Call to function method_exists.. with 'Symfony.+' and 'getRootNode' will always evaluate to false./" + + # PHPUnit + - + message: '#Property .*::\$.* has no typehint specified.#' + path: tests/ - '#Core23\\Doctrine\\Tests\\Fixtures\\DemoEntityManager::__construct\(\) does not call parent constructor from Sonata\\Doctrine\\Model\\BaseManager.#' diff --git a/src/Bridge/Symfony/DependencyInjection/Configuration.php b/src/Bridge/Symfony/DependencyInjection/Configuration.php index c00aaa60..90e2bf4e 100644 --- a/src/Bridge/Symfony/DependencyInjection/Configuration.php +++ b/src/Bridge/Symfony/DependencyInjection/Configuration.php @@ -22,7 +22,7 @@ public function getConfigTreeBuilder() $treeBuilder = new TreeBuilder('core23_doctrine'); // Keep compatibility with symfony/config < 4.2 - if (!method_exists($treeBuilder, 'getRootNode')) { + if (!method_exists(TreeBuilder::class, 'getRootNode')) { $rootNode = $treeBuilder->root('core23_doctrine'); } else { $rootNode = $treeBuilder->getRootNode(); diff --git a/src/Test/ORM/EntityManagerMockFactory.php b/src/Test/ORM/EntityManagerMockFactory.php index ac8a9afc..531328e7 100644 --- a/src/Test/ORM/EntityManagerMockFactory.php +++ b/src/Test/ORM/EntityManagerMockFactory.php @@ -28,7 +28,7 @@ final class EntityManagerMockFactory * * @return EntityManager|MockObject */ - public static function create(TestCase $test, Closure $qbCallback, $fields): MockObject + public static function create(TestCase $test, Closure $qbCallback, array $fields): MockObject { $qb = $test->getMockBuilder(QueryBuilder::class)->disableOriginalConstructor()->getMock(); @@ -65,7 +65,10 @@ private static function prepareQueryBuilder(TestCase $test, MockObject $qb): voi $qb->method('leftJoin')->willReturn($qb); } - private static function prepareMetadata(TestCase $test, $fields): MockObject + /** + * @param string[] $fields + */ + private static function prepareMetadata(TestCase $test, array $fields): MockObject { $metadata = $test->getMockBuilder(ClassMetadataInfo::class)->disableOriginalConstructor()->getMock(); $metadata->method('getFieldNames')->willReturn($fields); diff --git a/tests/Bridge/Symfony/Bundle/Core23DoctrineBundleTest.php b/tests/Bridge/Symfony/Bundle/Core23DoctrineBundleTest.php index 52c69d11..9ebb89a0 100644 --- a/tests/Bridge/Symfony/Bundle/Core23DoctrineBundleTest.php +++ b/tests/Bridge/Symfony/Bundle/Core23DoctrineBundleTest.php @@ -12,17 +12,9 @@ use Core23\Doctrine\Bridge\Symfony\Bundle\Core23DoctrineBundle; use Core23\Doctrine\Bridge\Symfony\DependencyInjection\Core23DoctrineExtension; use PHPUnit\Framework\TestCase; -use Symfony\Component\HttpKernel\Bundle\BundleInterface; final class Core23DoctrineBundleTest extends TestCase { - public function testItIsInstantiable(): void - { - $bundle = new Core23DoctrineBundle(); - - static::assertInstanceOf(BundleInterface::class, $bundle); - } - public function testGetPath(): void { $bundle = new Core23DoctrineBundle(); diff --git a/tests/Bridge/Symfony/DependencyInjection/Core23DoctrineExtensionTest.php b/tests/Bridge/Symfony/DependencyInjection/Core23DoctrineExtensionTest.php index 2f60ccd9..c096666a 100644 --- a/tests/Bridge/Symfony/DependencyInjection/Core23DoctrineExtensionTest.php +++ b/tests/Bridge/Symfony/DependencyInjection/Core23DoctrineExtensionTest.php @@ -12,6 +12,12 @@ namespace Core23\Doctrine\Tests\Bridge\Symfony\DependencyInjection; use Core23\Doctrine\Bridge\Symfony\DependencyInjection\Core23DoctrineExtension; +use Core23\Doctrine\EventListener\ORM\ConfirmableListener; +use Core23\Doctrine\EventListener\ORM\DeletableListener; +use Core23\Doctrine\EventListener\ORM\LifecycleDateListener; +use Core23\Doctrine\EventListener\ORM\SortableListener; +use Core23\Doctrine\EventListener\ORM\TablePrefixEventListener; +use Core23\Doctrine\EventListener\ORM\UniqueActiveListener; use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase; final class Core23DoctrineExtensionTest extends AbstractExtensionTestCase @@ -20,7 +26,12 @@ public function testLoadDefault(): void { $this->load(); - static::assertTrue(true); + $this->assertContainerBuilderHasService(ConfirmableListener::class); + $this->assertContainerBuilderHasService(DeletableListener::class); + $this->assertContainerBuilderHasService(LifecycleDateListener::class); + $this->assertContainerBuilderHasService(SortableListener::class); + $this->assertContainerBuilderHasService(UniqueActiveListener::class); + $this->assertContainerBuilderHasService(TablePrefixEventListener::class); } protected function getContainerExtensions() diff --git a/tests/EventListener/ORM/ConfirmableListenerTest.php b/tests/EventListener/ORM/ConfirmableListenerTest.php index 78d02032..bddbd81d 100644 --- a/tests/EventListener/ORM/ConfirmableListenerTest.php +++ b/tests/EventListener/ORM/ConfirmableListenerTest.php @@ -12,7 +12,6 @@ use Core23\Doctrine\EventListener\ORM\ConfirmableListener; use Core23\Doctrine\Tests\Fixtures\ClassWithAllProperties; use Core23\Doctrine\Tests\Fixtures\EmptyClass; -use Doctrine\Common\EventSubscriber; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Events; use Doctrine\ORM\Mapping\ClassMetadata; @@ -23,13 +22,6 @@ final class ConfirmableListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new ConfirmableListener(); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new ConfirmableListener(); diff --git a/tests/EventListener/ORM/DeletableListenerTest.php b/tests/EventListener/ORM/DeletableListenerTest.php index 2fae2541..d53b8bcf 100644 --- a/tests/EventListener/ORM/DeletableListenerTest.php +++ b/tests/EventListener/ORM/DeletableListenerTest.php @@ -12,7 +12,6 @@ use Core23\Doctrine\EventListener\ORM\DeletableListener; use Core23\Doctrine\Tests\Fixtures\ClassWithAllProperties; use Core23\Doctrine\Tests\Fixtures\EmptyClass; -use Doctrine\Common\EventSubscriber; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Events; use Doctrine\ORM\Mapping\ClassMetadata; @@ -23,13 +22,6 @@ final class DeletableListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new DeletableListener(); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new DeletableListener(); diff --git a/tests/EventListener/ORM/LifecycleDateListenerTest.php b/tests/EventListener/ORM/LifecycleDateListenerTest.php index b0629877..3ad5134b 100644 --- a/tests/EventListener/ORM/LifecycleDateListenerTest.php +++ b/tests/EventListener/ORM/LifecycleDateListenerTest.php @@ -14,7 +14,7 @@ use Core23\Doctrine\Tests\Fixtures\ClassWithAllProperties; use Core23\Doctrine\Tests\Fixtures\EmptyClass; use DateTime; -use Doctrine\Common\EventSubscriber; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Events; @@ -27,13 +27,6 @@ final class LifecycleDateListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new LifecycleDateListener(); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new LifecycleDateListener(); @@ -68,15 +61,20 @@ public function testPrePersistForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(LifecycleEventArgs::class); $eventArgs->getObject() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new LifecycleDateListener(); $listener->prePersist($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testPreUpdate(): void @@ -99,15 +97,20 @@ public function testPreUpdateForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(LifecycleEventArgs::class); $eventArgs->getObject() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new LifecycleDateListener(); $listener->preUpdate($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testLoadClassMetadataWithNoValidData(): void diff --git a/tests/EventListener/ORM/SortableListenerTest.php b/tests/EventListener/ORM/SortableListenerTest.php index ebff638f..323b5bdc 100644 --- a/tests/EventListener/ORM/SortableListenerTest.php +++ b/tests/EventListener/ORM/SortableListenerTest.php @@ -12,7 +12,7 @@ use Core23\Doctrine\EventListener\ORM\SortableListener; use Core23\Doctrine\Tests\Fixtures\ClassWithAllProperties; use Core23\Doctrine\Tests\Fixtures\EmptyClass; -use Doctrine\Common\EventSubscriber; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Event\PreUpdateEventArgs; @@ -26,13 +26,6 @@ final class SortableListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new SortableListener(); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new SortableListener(); @@ -49,30 +42,40 @@ public function testPrePersistForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(PreUpdateEventArgs::class); $eventArgs->getEntity() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new SortableListener(); $listener->prePersist($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testPreRemoveForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(LifecycleEventArgs::class); $eventArgs->getEntity() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new SortableListener(); $listener->preRemove($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testLoadClassMetadataWithNoValidData(): void diff --git a/tests/EventListener/ORM/TablePrefixEventListenerTest.php b/tests/EventListener/ORM/TablePrefixEventListenerTest.php index c360a7bf..ffea42d6 100644 --- a/tests/EventListener/ORM/TablePrefixEventListenerTest.php +++ b/tests/EventListener/ORM/TablePrefixEventListenerTest.php @@ -10,19 +10,11 @@ namespace Core23\Doctrine\Tests\EventListener\ORM; use Core23\Doctrine\EventListener\ORM\TablePrefixEventListener; -use Doctrine\Common\EventSubscriber; use Doctrine\ORM\Events; use PHPUnit\Framework\TestCase; final class TablePrefixEventListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new TablePrefixEventListener('acme_'); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new TablePrefixEventListener('acme_'); diff --git a/tests/EventListener/ORM/UniqueActiveListenerTest.php b/tests/EventListener/ORM/UniqueActiveListenerTest.php index a2a70fa9..49a7be58 100644 --- a/tests/EventListener/ORM/UniqueActiveListenerTest.php +++ b/tests/EventListener/ORM/UniqueActiveListenerTest.php @@ -12,7 +12,7 @@ use Core23\Doctrine\EventListener\ORM\UniqueActiveListener; use Core23\Doctrine\Tests\Fixtures\ClassWithAllProperties; use Core23\Doctrine\Tests\Fixtures\EmptyClass; -use Doctrine\Common\EventSubscriber; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Event\PreUpdateEventArgs; @@ -26,13 +26,6 @@ final class UniqueActiveListenerTest extends TestCase { - public function testItIsInstantiable(): void - { - $listener = new UniqueActiveListener(); - - static::assertInstanceOf(EventSubscriber::class, $listener); - } - public function testGetSubscribedEvents(): void { $listener = new UniqueActiveListener(); @@ -48,30 +41,40 @@ public function testPrePersistForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(PreUpdateEventArgs::class); $eventArgs->getEntity() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new UniqueActiveListener(); $listener->prePersist($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testPreUpdateForInvalidClass(): void { $object = $this->prophesize(stdClass::class); + $entityManager = $this->prophesize(EntityManagerInterface::class); + $eventArgs = $this->prophesize(LifecycleEventArgs::class); $eventArgs->getEntity() ->willReturn($object) ; + $eventArgs->getEntityManager() + ->willReturn($entityManager) + ; $listener = new UniqueActiveListener(); $listener->preUpdate($eventArgs->reveal()); - static::assertTrue(true); + $entityManager->createQueryBuilder()->shouldNotHaveBeenCalled(); } public function testLoadClassMetadataWithNoValidData(): void diff --git a/tests/Model/Traits/ConfirmableTraitTest.php b/tests/Model/Traits/ConfirmableTraitTest.php index 9e1e25ef..e219b54b 100644 --- a/tests/Model/Traits/ConfirmableTraitTest.php +++ b/tests/Model/Traits/ConfirmableTraitTest.php @@ -11,6 +11,7 @@ use Core23\Doctrine\Model\Traits\ConfirmableTrait; use DateTime; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; final class ConfirmableTraitTest extends TestCase @@ -54,6 +55,9 @@ public function testSetConfirmedAt(): void static::assertTrue($model->isConfirmed()); } + /** + * @return ConfirmableTrait&MockObject + */ private function createTraitMock() { return $this->getMockForTrait(ConfirmableTrait::class); diff --git a/tests/Model/Traits/DeleteableTraitTest.php b/tests/Model/Traits/DeleteableTraitTest.php index efa2f6d9..ff72e977 100644 --- a/tests/Model/Traits/DeleteableTraitTest.php +++ b/tests/Model/Traits/DeleteableTraitTest.php @@ -11,6 +11,7 @@ use Core23\Doctrine\Model\Traits\DeleteableTrait; use DateTime; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; final class DeleteableTraitTest extends TestCase @@ -54,6 +55,9 @@ public function testSetDeletedAt(): void static::assertTrue($model->isDeleted()); } + /** + * @return DeleteableTrait&MockObject + */ private function createTraitMock() { return $this->getMockForTrait(DeleteableTrait::class); diff --git a/tests/Model/Traits/LifecycleDateTimeTraitTest.php b/tests/Model/Traits/LifecycleDateTimeTraitTest.php index bf1e4091..628183f4 100644 --- a/tests/Model/Traits/LifecycleDateTimeTraitTest.php +++ b/tests/Model/Traits/LifecycleDateTimeTraitTest.php @@ -11,6 +11,7 @@ use Core23\Doctrine\Model\Traits\LifecycleDateTimeTrait; use DateTime; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; final class LifecycleDateTimeTraitTest extends TestCase @@ -57,6 +58,9 @@ public function testSetUpdated(): void static::assertNull($model->getUpdatedAt()); } + /** + * @return LifecycleDateTimeTrait&MockObject + */ private function createTraitMock() { return $this->getMockForTrait(LifecycleDateTimeTrait::class); diff --git a/tests/Model/Traits/SortableTraitTest.php b/tests/Model/Traits/SortableTraitTest.php index f4217539..447ff2a8 100644 --- a/tests/Model/Traits/SortableTraitTest.php +++ b/tests/Model/Traits/SortableTraitTest.php @@ -10,6 +10,7 @@ namespace Core23\Doctrine\Tests\Model\Traits; use Core23\Doctrine\Model\Traits\SortableTrait; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; final class SortableTraitTest extends TestCase @@ -36,6 +37,9 @@ public function testGetPositionGroup(): void static::assertSame([], $model->getPositionGroup()); } + /** + * @return MockObject&SortableTrait + */ private function createTraitMock() { return $this->getMockForTrait(SortableTrait::class);