| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- declare(strict_types=1);
- namespace App\Tests\Unit\State\Processor\Freemium;
- use ApiPlatform\Metadata\Delete;
- use ApiPlatform\Metadata\Post;
- use ApiPlatform\Metadata\Put;
- use App\ApiResources\Freemium\FreemiumEvent;
- use App\Entity\Booking\Event;
- use App\Repository\Booking\EventRepository;
- use App\Service\ApiResourceBuilder\Freemium\EventMappingBuilder;
- use App\State\Processor\Freemium\FreemiumEventProcessor;
- use Doctrine\ORM\EntityManagerInterface;
- use PHPUnit\Framework\MockObject\MockObject;
- use PHPUnit\Framework\TestCase;
- /**
- * Unit tests for ShopService.
- */
- class FreemiumEventProcessorTest extends TestCase
- {
- private readonly MockObject|EntityManagerInterface $entityManager;
- private readonly MockObject|EventMappingBuilder $eventMappingBuilder;
- private readonly MockObject|EventRepository $eventRepository;
- public function setUp(): void
- {
- $this->entityManager = $this->getMockBuilder(EntityManagerInterface::class)->disableOriginalConstructor()->getMock();
- $this->eventMappingBuilder = $this->getMockBuilder(EventMappingBuilder::class)->disableOriginalConstructor()->getMock();
- $this->eventRepository = $this->getMockBuilder(EventRepository::class)->disableOriginalConstructor()->getMock();
- }
- private function getFreemiumEventProcessorMockFor(string $methodName): FreemiumEventProcessor|MockObject
- {
- $freemiumEventProcessor = $this
- ->getMockBuilder(FreemiumEventProcessor::class)
- ->setConstructorArgs(
- [
- $this->entityManager,
- $this->eventMappingBuilder,
- $this->eventRepository,
- ]
- )
- ->setMethodsExcept([$methodName])
- ->getMock();
- return $freemiumEventProcessor;
- }
- /**
- * Test process method for POST operation.
- */
- public function testProcessWithPostMethod(): void
- {
- $freemiumEventProcessor = $this->getFreemiumEventProcessorMockFor('process');
- $data = $this->getMockBuilder(FreemiumEvent::class)->getMock();
- $event = $this->getMockBuilder(Event::class)->getMock();
- $event->method('getId')->willReturn(1);
- $operation = new Post();
- $freemiumEventProcessor->expects(self::once())
- ->method('getEvent')
- ->with($operation)
- ->willReturn($event);
- $this->eventMappingBuilder->expects(self::once())
- ->method('mapInformations')
- ->with($event, $data);
- $this->entityManager->expects(self::once())
- ->method('persist')
- ->with($event);
- $this->entityManager->expects(self::once())
- ->method('flush')
- ;
- $freemiumEvent = $freemiumEventProcessor->process($data, $operation);
- $this->assertEquals(1, $freemiumEvent->id);
- }
- /**
- * Test process method for PUT operation.
- */
- public function testProcessWithPutMethod(): void
- {
- $freemiumEventProcessor = $this->getFreemiumEventProcessorMockFor('process');
- $data = $this->getMockBuilder(FreemiumEvent::class)->getMock();
- $event = $this->getMockBuilder(Event::class)->getMock();
- $data->id = 1;
- $operation = new Put();
- $freemiumEventProcessor->expects(self::once())
- ->method('getEvent')
- ->with($operation)
- ->willReturn($event);
- $this->eventMappingBuilder->expects(self::once())
- ->method('mapInformations')
- ->with($event, $data);
- $this->entityManager->expects(self::once())
- ->method('persist')
- ->with($event);
- $this->entityManager->expects(self::once())
- ->method('flush')
- ;
- $freemiumEvent = $freemiumEventProcessor->process($data, $operation);
- $this->assertEquals(1, $freemiumEvent->id);
- }
- /**
- * Test process method for DELETE operation.
- */
- public function testProcessWithDeleteMethod(): void
- {
- $freemiumEventProcessor = $this->getFreemiumEventProcessorMockFor('process');
- $freemiumEvent = $this->getMockBuilder(FreemiumEvent::class)->getMock();
- $event = $this->getMockBuilder(Event::class)->getMock();
- $operation = new Delete();
- $freemiumEventProcessor->expects(self::once())
- ->method('getEvent')
- ->with($operation)
- ->willReturn($event);
- $this->entityManager->expects(self::once())
- ->method('remove')
- ->with($event);
- $this->entityManager->expects(self::once())
- ->method('flush')
- ;
- $freemiumEventProcessor->process($freemiumEvent, $operation);
- }
- }
|