Spaces:
No application file
No application file
| namespace Mautic\MessengerBundle\Tests\MessageHandler; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| use Mautic\LeadBundle\Entity\LeadRepository; | |
| use Mautic\MessengerBundle\Message\PageHitNotification; | |
| use Mautic\MessengerBundle\MessageHandler\PageHitNotificationHandler; | |
| use Mautic\PageBundle\Entity\Hit; | |
| use Mautic\PageBundle\Entity\HitRepository; | |
| use Mautic\PageBundle\Entity\Page; | |
| use Mautic\PageBundle\Entity\PageRepository; | |
| use Mautic\PageBundle\Entity\Redirect; | |
| use Mautic\PageBundle\Entity\RedirectRepository; | |
| use Mautic\PageBundle\Model\PageModel; | |
| use PHPUnit\Framework\MockObject\MockObject; | |
| use PHPUnit\Framework\TestCase; | |
| use Psr\Log\LoggerInterface; | |
| use Symfony\Component\HttpFoundation\Request; | |
| class PageHitNotificationHandlerTest extends TestCase | |
| { | |
| public function testInvoke(): void | |
| { | |
| [$hitId, $pageId, $leadId, $redirectId] = [random_int(1, 1000), random_int(1, 1000), random_int(1, 1000), random_int(1, 1000)]; | |
| $redirectObject = new Redirect(); | |
| $redirectObject->setRedirectId((string) $redirectId); | |
| [$hitObject, $pageObject, $leadObject] = [ | |
| (new Hit())->setCode(7), | |
| (new Page())->setAlias('james_bond'), | |
| (new Lead())->setId($leadId), | |
| ]; | |
| $hitRepoMock = $this->createMock(HitRepository::class); | |
| $hitRepoMock | |
| ->expects($this->once()) | |
| ->method('find') | |
| ->with($hitId) | |
| ->willReturn($hitObject); | |
| $pageRepoMock = $this->createMock(PageRepository::class); | |
| $pageRepoMock->expects($this->once()) | |
| ->method('find') | |
| ->with($pageId) | |
| ->willReturn($pageObject); | |
| $redirectRepoMock = $this->createMock(RedirectRepository::class); | |
| $redirectRepoMock | |
| ->expects($this->never()) | |
| ->method('find') | |
| ->with($redirectId) | |
| ->willReturn($redirectObject); | |
| $leadRepoMock = $this->createMock(LeadRepository::class); | |
| $leadRepoMock | |
| ->expects($this->once()) | |
| ->method('find') | |
| ->with($leadId) | |
| ->willReturn($leadObject); | |
| $request = new Request(); | |
| $request->query->set('testMe', 'I am here'); | |
| /** @var MockObject|PageModel $pageModelMock */ | |
| $pageModelMock = $this->createMock(PageModel::class); | |
| $pageModelMock | |
| ->expects($this->exactly(1)) | |
| ->method('processPageHit') | |
| ->with($hitObject, $pageObject, $request, $leadObject, false, false); | |
| $message = new PageHitNotification($hitId, $request, false, false, $pageId, $leadId); | |
| /** @var MockObject|LoggerInterface $loggerMock */ | |
| $loggerMock = $this->createMock(LoggerInterface::class); | |
| $handler = new PageHitNotificationHandler( | |
| $pageRepoMock, $hitRepoMock, $leadRepoMock, $loggerMock, $redirectRepoMock, $pageModelMock | |
| ); | |
| $handler->__invoke($message); | |
| } | |
| } | |