Skip to content

Commit 371c489

Browse files
author
vlad
committed
Added mock mailer service
1 parent f18fbae commit 371c489

File tree

7 files changed

+84
-15
lines changed

7 files changed

+84
-15
lines changed

config/services.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,22 @@ services:
4040
App\Service\TaskService\Contract\DelayServiceInterface:
4141
alias: App\Service\TaskServerGrpcAdapter\TaskServerGrpcAdapter
4242

43-
4443
task_server_grpc_adapter.serializer:
4544
class: App\Serializer\AmqpMessageSerializer
4645
arguments:
4746
$messageClass: App\Service\TaskServerGrpcAdapter\BusMessage\TaskExecuteMessage
4847

49-
5048
App\Service\TaskService\TaskService:
5149
tags:
5250
- name: kernel.event_listener
5351
event: App\Service\TaskServerGrpcAdapter\Event\TaskExecuteEvent
5452
method: onTaskExecuteEvent
5553

56-
5754
App\Domain\Message\MessageManager:
5855
tags:
5956
- name: kernel.event_listener
6057
event: App\Service\TaskService\Event\SendingTimeMessageTriggeredEvent
6158
method: onSendingTimeMessageTriggeredEvent
59+
60+
App\Contract\Mailer\MailerInterface:
61+
class: App\Service\MailerMockService\MailerMockService
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace App\Contract\Mailer;
4+
5+
use Throwable;
6+
7+
interface MailerExceptionInterface extends Throwable
8+
{
9+
10+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
4+
namespace App\Contract\Mailer;
5+
6+
7+
interface MailerInterface
8+
{
9+
/**
10+
* @param string $recipient
11+
* @param string $text
12+
* @return bool
13+
* @throws MailerExceptionInterface
14+
*/
15+
public function send(string $recipient, string $text);
16+
}

src/Domain/Message/Entity/Message.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ class Message
1818

1919
const STATUS_PENDING = 'pending';
2020
const STATUS_SHIPPED = 'shipped';
21+
const STATUS_SHIPPING_FAILED = 'shipping_failed';
2122
const STATUS_CANCELED = 'canceled';
23+
const STATUS_CANCELING_FAILED = 'canceling_failed';
2224
const STATUS_FAILED = 'failed';
2325

2426
private static $statusStateMachine = [
2527
self::STATUS_PENDING => [
26-
self::STATUS_SHIPPED => [
27-
self::STATUS_FAILED => null
28-
],
29-
self::STATUS_CANCELED => [
30-
self::STATUS_FAILED => null
31-
]
28+
self::STATUS_SHIPPED => null,
29+
self::STATUS_SHIPPING_FAILED => null,
30+
self::STATUS_CANCELED => null,
31+
self::STATUS_CANCELING_FAILED => null,
3232
]
3333
];
3434

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
4+
namespace App\Domain\Message\Event;
5+
6+
7+
use Symfony\Contracts\EventDispatcher\Event;
8+
9+
class MessageShippingFailedEvent extends BaseEvent
10+
{
11+
12+
}

src/Domain/Message/MessageManager.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44
namespace App\Domain\Message;
55

6+
use App\Contract\Mailer\MailerExceptionInterface;
7+
use App\Contract\Mailer\MailerInterface;
68
use App\Domain\Message\Contract\SendingTimeMessageTriggeredEventInterface;
79
use App\Domain\Message\Dto\ScheduleSendingMessage;
810
use App\Domain\Message\Entity\Message;
911
use App\Domain\Message\Event\MessageScheduledEvent;
1012
use App\Domain\Message\Event\MessageShippedEvent;
13+
use App\Domain\Message\Event\MessageShippingFailedEvent;
1114
use App\Domain\Message\Exception\MessageManagerException;
1215
use App\Domain\Message\Repository\MessageRepository;
1316
use App\Service\TaskService\Config;
@@ -27,19 +30,22 @@ class MessageManager
2730
private $eventDispatcher;
2831
private $messageRepository;
2932
private $logger;
33+
private $mailer;
3034

3135
public function __construct(
3236
TaskService $taskService,
3337
EntityManagerInterface $entityManager,
3438
EventDispatcherInterface $eventDispatcher,
3539
MessageRepository $messageRepository,
40+
MailerInterface $mailer,
3641
LoggerInterface $logger
3742
)
3843
{
3944
$this->taskService = $taskService;
4045
$this->entityManager = $entityManager;
4146
$this->eventDispatcher = $eventDispatcher;
4247
$this->messageRepository = $messageRepository;
48+
$this->mailer = $mailer;
4349
$this->logger = $logger;
4450
}
4551

@@ -69,7 +75,7 @@ public function scheduleSending(ScheduleSendingMessage $data)
6975
} catch (Throwable $e) {
7076
$this->entityManager->rollback();
7177
$error = 'Error while schedule new message';
72-
$this->logger->error($error, ['exception' => $e, 'method' => __METHOD__]);
78+
$this->logger->error($error, ['exception' => $e, 'method' => __METHOD__, 'data' => $data]);
7379
throw new MessageManagerException($error);
7480
}
7581
}
@@ -155,14 +161,18 @@ public function onSendingTimeMessageTriggeredEvent(SendingTimeMessageTriggeredEv
155161

156162
$message->setStatus(Message::STATUS_SHIPPED);
157163

164+
try {
165+
$this->mailer->send($message->getEmail(), $message->getText());
166+
$event = new MessageShippedEvent($message);
167+
} catch (MailerExceptionInterface $e) {
168+
$message->setStatus(Message::STATUS_SHIPPING_FAILED);
169+
$event = new MessageShippingFailedEvent($message);
170+
}
171+
158172
$this->entityManager->persist($message);
159173
$this->entityManager->flush();
160-
161-
//use api to send
162-
163-
164174
$this->entityManager->commit();
165-
$this->eventDispatcher->dispatch(new MessageShippedEvent($message));
175+
$this->eventDispatcher->dispatch($event);
166176
} catch (Throwable $e) {
167177
$this->entityManager->rollback();
168178
$m = 'Error while handle event from task service';
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
4+
namespace App\Service\MailerMockService;
5+
6+
7+
use App\Contract\Mailer\MailerExceptionInterface;
8+
use App\Contract\Mailer\MailerInterface;
9+
10+
class MailerMockService implements MailerInterface
11+
{
12+
/**
13+
* @param string $recipient
14+
* @param string $text
15+
* @throws MailerExceptionInterface
16+
*/
17+
public function send(string $recipient, string $text)
18+
{
19+
20+
}
21+
}

0 commit comments

Comments
 (0)