| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- declare(strict_types=1);
- namespace App\Tests\Unit\Doctrine;
- use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
- use ApiPlatform\Metadata\Operation;
- use Doctrine\ORM\QueryBuilder;
- use PHPUnit\Framework\MockObject\MockObject;
- class TestableAbstractExtension extends \App\Doctrine\AbstractExtension
- {
- public function apply(QueryBuilder $queryBuilder, string $resourceClass, ?Operation $operation): void
- {
- parent::apply($queryBuilder, $resourceClass, $operation);
- }
- public function supports(string $resourceClass, ?Operation $operation): bool
- {
- throw new \Exception('This method should not be called');
- }
- public function addWhere(QueryBuilder $queryBuilder, string $resourceClass, ?Operation $operation): void
- {
- throw new \Exception('This method should not be called');
- }
- }
- class AbstractExtensionTest extends ExtensionTestCase
- {
- protected function getMockObjectFor(string $methodName): MockObject|TestableAbstractExtension
- {
- return $this
- ->getMockBuilder(TestableAbstractExtension::class)
- ->setMethodsExcept([$methodName])
- ->getMock();
- }
- public function testApplyToCollection(): void
- {
- $extension = $this->getMockObjectFor('applyToCollection');
- $queryNameGeneratorInterface = $this->getMockBuilder(QueryNameGeneratorInterface::class)->getMock();
- $operation = $this->getMockBuilder(Operation::class)->getMock();
- $extension
- ->expects($this->once())
- ->method('apply')
- ->with($this->queryBuilder, 'App\Entity\Access\Access', $operation);
- $extension->applyToCollection(
- $this->queryBuilder,
- $queryNameGeneratorInterface,
- 'App\Entity\Access\Access',
- $operation
- );
- }
- public function testApplyToItem(): void
- {
- $extension = $this->getMockObjectFor('applyToItem');
- $queryNameGeneratorInterface = $this->getMockBuilder(QueryNameGeneratorInterface::class)->getMock();
- $operation = $this->getMockBuilder(Operation::class)->getMock();
- $extension
- ->expects($this->once())
- ->method('apply')
- ->with($this->queryBuilder, 'App\Entity\Access\Access', $operation);
- $extension->applyToItem(
- $this->queryBuilder,
- $queryNameGeneratorInterface,
- 'App\Entity\Access\Access',
- [],
- $operation
- );
- }
- public function testApply(): void
- {
- $extension = $this->getMockObjectFor('apply');
- $operation = $this->getMockBuilder(Operation::class)->getMock();
- $extension
- ->expects($this->once())
- ->method('supports')
- ->with('App\Entity\Access\Access', $operation)
- ->willReturn(true);
- $extension
- ->expects(self::once())
- ->method('addWhere')
- ->with($this->queryBuilder, 'App\Entity\Access\Access', $operation);
- $extension->apply($this->queryBuilder, 'App\Entity\Access\Access', $operation);
- }
- public function testApplyNoSupport(): void
- {
- $extension = $this->getMockObjectFor('apply');
- $operation = $this->getMockBuilder(Operation::class)->getMock();
- $extension
- ->expects($this->once())
- ->method('supports')
- ->with('App\Entity\Access\Access', $operation)
- ->willReturn(false);
- $extension
- ->expects(self::never())
- ->method('addWhere');
- $extension->apply($this->queryBuilder, 'App\Entity\Access\Access', $operation);
- }
- }
|