Open sidebar
<?php namespace Cbm\Tests\Helper; use Cbm\Application\EducationService\Entity\ServiceTypeKeyEnum; use Cbm\Application\Messenger\Message\Entity\MessengerMessage; use Cbm\Application\Messenger\Message\MessengerMessageRepositoryInterface; use Cbm\Application\Modifier\Entity\ModifierNameEnum; use Cbm\Application\Orchestration\Entity\FlowId; use Cbm\Application\Orchestration\Entity\SalesToolId; use Cbm\Application\Orchestration\Modifier\Specification\MessengerFlow\DemoLessonMessengerFlowModifierSpecification; use Cbm\Controller\Amqp\MessengerMessage\MessageInAddedConsumer; use Cbm\Controller\Amqp\MessengerMessage\StatusCreatedConsumer; use Cbm\Tests\Mock\CommunicationsMocks; use PhpAmqpLib\Message\AMQPMessage; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; class MessengerFlowHelper extends BaseModule { public function haveActiveMessengerFlow(?SalesToolId $salesToolId = null): void { if ($salesToolId === null) { $salesToolId = SalesToolId::MESSENGER_ADULT_ENGLISH_PAY_BEFORE(); } $esId = mt_rand(); $flowHelper = $this->getFlowHelper(); $flowHelper->initContext( ServiceTypeKeyEnum::ENGLISH_ADULT_NOT_NATIVE_SPEAKER, FlowId::DEMO_LESSON_ADULT_ENGLISH_MESSENGER(), $salesToolId, $esId, ); $flowHelper->createModifier(ModifierNameEnum::MESSENGER_FLOW(), [ DemoLessonMessengerFlowModifierSpecification::GROUP_B, ]); $this->getClickhouseEventAnalyticsMocks()->wantMockClickhouseEventAnalyticsSendEvents(); $this->getCrm2Mocks()->wantMockCrm2AppendSpecialComment($flowHelper->getContext()->getEducationServiceId()); } public function sendMessageToUser(): UuidInterface { $uuid = Uuid::uuid4(); $flowHelper = $this->getFlowHelper(); $context = $flowHelper->getContext(); $messengerMessage = MessengerMessage::create($uuid, $context->getEducationServiceId(), $context->getUserId()); $functionalModule = $this->getFunctionalModule(); $messengerMessageRepository = $functionalModule->getSymfonyServiceByClassName( MessengerMessageRepositoryInterface::class, ); $messengerMessageRepository->save($messengerMessage); return $uuid; } public function setLastMessageAnswered(int $userId): void { $messageId = mt_rand(); $uuid = Uuid::uuid4(); $message = new AMQPMessage( json_try_encode([ 'thread_id' => mt_rand(), 'message_id' => $messageId, 'uuid' => $uuid->toString(), ]), ); /** @var CommunicationsMocks $communicationsMocks */ $communicationsMocks = $this->getModule('\\' . CommunicationsMocks::class); $communicationsMocks->wantMockCommunicationsWAFromUserMessage($messageId, $userId); $functionalModule = $this->getFunctionalModule(); /** @var MessageInAddedConsumer $consumer */ $consumer = $functionalModule->getSymfonyServiceByClassName(MessageInAddedConsumer::class); $consumer->execute($message); } public function setMessageRead(string $uuid): void { $message = new AMQPMessage( json_try_encode([ 'name' => 'read', 'message_id' => mt_rand(), 'message_uuid' => $uuid, ]), ); $functionalModule = $this->getFunctionalModule(); /** @var StatusCreatedConsumer $consumer */ $consumer = $functionalModule->getSymfonyServiceByClassName(StatusCreatedConsumer::class); $consumer->execute($message); } }
Close sidebar
Back
Please note that all pasted data is publicly available.
Twitter
GitHub
Use setting
Back
Please note that all pasted data is publicly available.
Twitter
GitHub
Use setting