connection->executeStatement('DELETE FROM '.MAUTIC_TABLE_PREFIX.'webhook_queue'); $this->connection->executeStatement('ALTER TABLE '.MAUTIC_TABLE_PREFIX.'webhook_queue AUTO_INCREMENT = 1'); } public function testEventsOrderByDirAsc(): void { $webhookModel = $this->getWebhookModel(Criteria::ASC); $webhook = $this->createWebhookAndQueue(); $queueArray = $webhookModel->getWebhookQueues($webhook); // Order should be 1 to 10 $counter = 1; foreach ($queueArray as $queuedEvent) { Assert::assertSame($counter, $queuedEvent->getId()); $payload = json_decode($queuedEvent->getPayload(), true); Assert::assertSame($counter, $payload['spoof']); ++$counter; } Assert::assertSame(11, $counter); } public function testEventsOrderByDirDesc(): void { $webhookModel = $this->getWebhookModel(Criteria::DESC); $webhook = $this->createWebhookAndQueue(); $queueArray = $webhookModel->getWebhookQueues($webhook); // Order should be 10 to 1 $counter = 10; foreach ($queueArray as $queuedEvent) { Assert::assertSame($counter, $queuedEvent->getId()); $payload = json_decode($queuedEvent->getPayload(), true); Assert::assertSame($counter, $payload['spoof']); --$counter; } Assert::assertSame(0, $counter); } private function createWebhookAndQueue(): Webhook { $webhook = new Webhook(); $webhook->setName('Test Webhook'); $webhook->setWebhookUrl('https://localhost'); $webhook->setSecret('abc13'); $this->em->persist($webhook); $this->em->flush(); $event = new Event(); $event->setWebhook($webhook); $event->setEventType('mautic.email_on_send'); $this->em->persist($event); $this->em->flush(); $counter = 1; while ($counter <= 10) { $this->createWebhookQueue($webhook, $event, ['spoof' => $counter]); ++$counter; } return $webhook; } /** * @param mixed[] $payload */ private function createWebhookQueue(Webhook $webhook, Event $event, array $payload): void { $queue = new WebhookQueue(); $queue->setDateAdded(new \DateTime()); $queue->setEvent($event); $queue->setWebhook($webhook); $queue->setPayload(json_encode($payload)); $this->em->persist($queue); $this->em->flush(); } private function getWebhookModel(string $direction): WebhookModel { $webhookParams = [ 'queue_mode' => WebhookModel::COMMAND_PROCESS, 'events_orderby_dir' => $direction, ]; $this->setUpSymfony($webhookParams); return static::getContainer()->get('mautic.webhook.model.webhook'); } }