From e58f787260222f4608806be9b4eb26697cfd6b6c Mon Sep 17 00:00:00 2001 From: Tatevik Date: Sun, 17 Aug 2025 18:44:57 +0400 Subject: [PATCH 1/3] BounceRegexManager --- config/services/managers.yml | 4 + config/services/repositories.yml | 5 + .../Repository/BounceRegexRepository.php | 6 + .../Messaging/Service/BounceRegexManager.php | 99 ++++++++++++ .../Service/BounceRegexManagerTest.php | 144 ++++++++++++++++++ 5 files changed, 258 insertions(+) create mode 100644 src/Domain/Messaging/Service/BounceRegexManager.php create mode 100644 tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php diff --git a/config/services/managers.yml b/config/services/managers.yml index d253fc95..473af414 100644 --- a/config/services/managers.yml +++ b/config/services/managers.yml @@ -75,3 +75,7 @@ services: PhpList\Core\Domain\Subscription\Service\Manager\SubscribePageManager: autowire: true autoconfigure: true + + PhpList\Core\Domain\Messaging\Service\BounceRegexManager: + autowire: true + autoconfigure: true diff --git a/config/services/repositories.yml b/config/services/repositories.yml index 02c9e7d3..69bdb6ce 100644 --- a/config/services/repositories.yml +++ b/config/services/repositories.yml @@ -130,3 +130,8 @@ services: parent: PhpList\Core\Domain\Common\Repository\AbstractRepository arguments: - PhpList\Core\Domain\Subscription\Model\SubscribePageData + + PhpList\Core\Domain\Messaging\Repository\BounceRegexRepository: + parent: PhpList\Core\Domain\Common\Repository\AbstractRepository + arguments: + - PhpList\Core\Domain\Messaging\Model\BounceRegex diff --git a/src/Domain/Messaging/Repository/BounceRegexRepository.php b/src/Domain/Messaging/Repository/BounceRegexRepository.php index a08f65c0..f5088376 100644 --- a/src/Domain/Messaging/Repository/BounceRegexRepository.php +++ b/src/Domain/Messaging/Repository/BounceRegexRepository.php @@ -7,8 +7,14 @@ use PhpList\Core\Domain\Common\Repository\AbstractRepository; use PhpList\Core\Domain\Common\Repository\CursorPaginationTrait; use PhpList\Core\Domain\Common\Repository\Interfaces\PaginatableRepositoryInterface; +use PhpList\Core\Domain\Messaging\Model\BounceRegex; class BounceRegexRepository extends AbstractRepository implements PaginatableRepositoryInterface { use CursorPaginationTrait; + + public function findOneByRegexHash(string $regexHash): ?BounceRegex + { + return $this->findOneBy(['regexHash' => $regexHash]); + } } diff --git a/src/Domain/Messaging/Service/BounceRegexManager.php b/src/Domain/Messaging/Service/BounceRegexManager.php new file mode 100644 index 00000000..aa29dac0 --- /dev/null +++ b/src/Domain/Messaging/Service/BounceRegexManager.php @@ -0,0 +1,99 @@ +bounceRegexRepository = $bounceRegexRepository; + $this->entityManager = $entityManager; + } + + /** + * Creates or updates (if exists) a BounceRegex from a raw regex pattern. + */ + public function createOrUpdateFromPattern( + string $regex, + ?string $action = null, + ?int $listOrder = 0, + ?int $admin = null, + ?string $comment = null, + ?string $status = null + ): BounceRegex { + $regexHash = md5($regex); + + $existing = $this->bounceRegexRepository->findOneByRegexHash($regexHash); + + if ($existing !== null) { + $existing->setRegex($regex) + ->setAction($action ?? $existing->getAction()) + ->setListOrder($listOrder ?? $existing->getListOrder()) + ->setAdmin($admin ?? $existing->getAdmin()) + ->setComment($comment ?? $existing->getComment()) + ->setStatus($status ?? $existing->getStatus()); + + $this->bounceRegexRepository->save($existing); + + return $existing; + } + + $bounceRegex = new BounceRegex( + regex: $regex, + regexHash: $regexHash, + action: $action, + listOrder: $listOrder, + admin: $admin, + comment: $comment, + status: $status, + count: 0 + ); + + $this->bounceRegexRepository->save($bounceRegex); + + return $bounceRegex; + } + + /** @return BounceRegex[] */ + public function getAll(): array + { + return $this->bounceRegexRepository->findAll(); + } + + public function getByHash(string $regexHash): ?BounceRegex + { + return $this->bounceRegexRepository->findOneByRegexHash($regexHash); + } + + public function delete(BounceRegex $bounceRegex): void + { + $this->bounceRegexRepository->remove($bounceRegex); + } + + /** + * Associates a bounce with the regex it matched and increments usage count. + */ + public function associateBounce(BounceRegex $regex, Bounce $bounce): BounceRegexBounce + { + $relation = new BounceRegexBounce($regex->getId() ?? 0, $bounce->getId() ?? 0); + $this->entityManager->persist($relation); + + $regex->setCount(($regex->getCount() ?? 0) + 1); + $this->entityManager->flush(); + + return $relation; + } +} diff --git a/tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php b/tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php new file mode 100644 index 00000000..22487d58 --- /dev/null +++ b/tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php @@ -0,0 +1,144 @@ +regexRepository = $this->createMock(BounceRegexRepository::class); + $this->entityManager = $this->createMock(EntityManagerInterface::class); + + $this->manager = new BounceRegexManager( + bounceRegexRepository: $this->regexRepository, + entityManager: $this->entityManager + ); + } + + public function testCreateNewRegex(): void + { + $pattern = 'user unknown'; + $expectedHash = md5($pattern); + + $this->regexRepository->expects($this->once()) + ->method('findOneByRegexHash') + ->with($expectedHash) + ->willReturn(null); + + $this->regexRepository->expects($this->once()) + ->method('save') + ->with($this->isInstanceOf(BounceRegex::class)); + + $regex = $this->manager->createOrUpdateFromPattern( + regex: $pattern, + action: 'delete', + listOrder: 5, + admin: 1, + comment: 'test', + status: 'active' + ); + + $this->assertInstanceOf(BounceRegex::class, $regex); + $this->assertSame($pattern, $regex->getRegex()); + $this->assertSame($expectedHash, $regex->getRegexHash()); + $this->assertSame('delete', $regex->getAction()); + $this->assertSame(5, $regex->getListOrder()); + $this->assertSame(1, $regex->getAdmin()); + $this->assertSame('test', $regex->getComment()); + $this->assertSame('active', $regex->getStatus()); + } + + public function testUpdateExistingRegex(): void + { + $pattern = 'mailbox full'; + $hash = md5($pattern); + + $existing = new BounceRegex( + regex: $pattern, + regexHash: $hash, + action: 'keep', + listOrder: 0, + admin: null, + comment: null, + status: 'inactive', + count: 3 + ); + + $this->regexRepository->expects($this->once()) + ->method('findOneByRegexHash') + ->with($hash) + ->willReturn($existing); + + $this->regexRepository->expects($this->once()) + ->method('save') + ->with($existing); + + $updated = $this->manager->createOrUpdateFromPattern( + regex: $pattern, + action: 'delete', + listOrder: 10, + admin: 2, + comment: 'upd', + status: 'active' + ); + + $this->assertSame('delete', $updated->getAction()); + $this->assertSame(10, $updated->getListOrder()); + $this->assertSame(2, $updated->getAdmin()); + $this->assertSame('upd', $updated->getComment()); + $this->assertSame('active', $updated->getStatus()); + $this->assertSame($hash, $updated->getRegexHash()); + } + + public function testDeleteRegex(): void + { + $model = $this->createMock(BounceRegex::class); + + $this->regexRepository->expects($this->once()) + ->method('remove') + ->with($model); + + $this->manager->delete($model); + } + + public function testAssociateBounceIncrementsCountAndPersistsRelation(): void + { + $regex = new BounceRegex(regex: 'x', regexHash: md5('x')); + + $refRegex = new ReflectionProperty(BounceRegex::class, 'id'); + $refRegex->setValue($regex, 7); + + $bounce = $this->createMock(Bounce::class); + $bounce->method('getId')->willReturn(11); + + $this->entityManager->expects($this->once()) + ->method('persist') + ->with($this->callback(function ($entity) use ($regex) { + return $entity instanceof BounceRegexBounce + && $entity->getRegex() === $regex->getId(); + })); + + $this->entityManager->expects($this->once()) + ->method('flush'); + + $this->assertSame(0, $regex->getCount()); + $this->manager->associateBounce($regex, $bounce); + $this->assertSame(1, $regex->getCount()); + } +} From 1d58bbce0e45011b1e31db512da01ed28e3a8e66 Mon Sep 17 00:00:00 2001 From: Tatevik Date: Mon, 18 Aug 2025 09:23:23 +0400 Subject: [PATCH 2/3] Fix manager directory --- config/services/managers.yml | 38 +++++++++---------- .../{ => Manager}/BounceRegexManager.php | 2 +- .../Service/{ => Manager}/MessageManager.php | 2 +- .../{ => Manager}/TemplateImageManager.php | 2 +- .../Service/{ => Manager}/TemplateManager.php | 2 +- .../{ => Manager}/BounceRegexManagerTest.php | 4 +- .../{ => Manager}/ListMessageManagerTest.php | 2 +- .../{ => Manager}/MessageManagerTest.php | 4 +- .../TemplateImageManagerTest.php | 4 +- .../{ => Manager}/TemplateManagerTest.php | 6 +-- 10 files changed, 33 insertions(+), 33 deletions(-) rename src/Domain/Messaging/Service/{ => Manager}/BounceRegexManager.php (98%) rename src/Domain/Messaging/Service/{ => Manager}/MessageManager.php (96%) rename src/Domain/Messaging/Service/{ => Manager}/TemplateImageManager.php (98%) rename src/Domain/Messaging/Service/{ => Manager}/TemplateManager.php (98%) rename tests/Unit/Domain/Messaging/Service/{ => Manager}/BounceRegexManagerTest.php (97%) rename tests/Unit/Domain/Messaging/Service/{ => Manager}/ListMessageManagerTest.php (98%) rename tests/Unit/Domain/Messaging/Service/{ => Manager}/MessageManagerTest.php (97%) rename tests/Unit/Domain/Messaging/Service/{ => Manager}/TemplateImageManagerTest.php (95%) rename tests/Unit/Domain/Messaging/Service/{ => Manager}/TemplateManagerTest.php (93%) diff --git a/config/services/managers.yml b/config/services/managers.yml index 473af414..0f6bb119 100644 --- a/config/services/managers.yml +++ b/config/services/managers.yml @@ -4,78 +4,78 @@ services: autoconfigure: true public: false - PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager: + PhpList\Core\Domain\Identity\Service\SessionManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Identity\Service\SessionManager: + PhpList\Core\Domain\Identity\Service\AdministratorManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscriberListManager: + PhpList\Core\Domain\Identity\Service\AdminAttributeDefinitionManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscriptionManager: + PhpList\Core\Domain\Identity\Service\AdminAttributeManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Messaging\Service\MessageManager: + PhpList\Core\Domain\Identity\Service\PasswordManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Messaging\Service\TemplateManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Messaging\Service\TemplateImageManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriberListManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Identity\Service\AdministratorManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriptionManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Identity\Service\AdminAttributeDefinitionManager: + PhpList\Core\Domain\Subscription\Service\Manager\AttributeDefinitionManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Identity\Service\AdminAttributeManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\AttributeDefinitionManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriberAttributeManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscriberBlacklistManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscriberAttributeManager: + PhpList\Core\Domain\Subscription\Service\Manager\SubscribePageManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Configuration\Service\Manager\ConfigManager: + PhpList\Core\Domain\Messaging\Service\Manager\MessageManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Identity\Service\PasswordManager: + PhpList\Core\Domain\Messaging\Service\Manager\TemplateManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Messaging\Service\Manager\ListMessageManager: + PhpList\Core\Domain\Messaging\Service\Manager\TemplateImageManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscriberBlacklistManager: + PhpList\Core\Domain\Messaging\Service\Manager\BounceRegexManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Subscription\Service\Manager\SubscribePageManager: + PhpList\Core\Domain\Messaging\Service\Manager\ListMessageManager: autowire: true autoconfigure: true - PhpList\Core\Domain\Messaging\Service\BounceRegexManager: + PhpList\Core\Domain\Configuration\Service\Manager\ConfigManager: autowire: true autoconfigure: true diff --git a/src/Domain/Messaging/Service/BounceRegexManager.php b/src/Domain/Messaging/Service/Manager/BounceRegexManager.php similarity index 98% rename from src/Domain/Messaging/Service/BounceRegexManager.php rename to src/Domain/Messaging/Service/Manager/BounceRegexManager.php index aa29dac0..22daa832 100644 --- a/src/Domain/Messaging/Service/BounceRegexManager.php +++ b/src/Domain/Messaging/Service/Manager/BounceRegexManager.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Domain\Messaging\Service; +namespace PhpList\Core\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use PhpList\Core\Domain\Messaging\Model\Bounce; diff --git a/src/Domain/Messaging/Service/MessageManager.php b/src/Domain/Messaging/Service/Manager/MessageManager.php similarity index 96% rename from src/Domain/Messaging/Service/MessageManager.php rename to src/Domain/Messaging/Service/Manager/MessageManager.php index 9af4df0b..7b263083 100644 --- a/src/Domain/Messaging/Service/MessageManager.php +++ b/src/Domain/Messaging/Service/Manager/MessageManager.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Domain\Messaging\Service; +namespace PhpList\Core\Domain\Messaging\Service\Manager; use PhpList\Core\Domain\Identity\Model\Administrator; use PhpList\Core\Domain\Messaging\Model\Dto\MessageContext; diff --git a/src/Domain/Messaging/Service/TemplateImageManager.php b/src/Domain/Messaging/Service/Manager/TemplateImageManager.php similarity index 98% rename from src/Domain/Messaging/Service/TemplateImageManager.php rename to src/Domain/Messaging/Service/Manager/TemplateImageManager.php index c5ebd3f4..30705715 100644 --- a/src/Domain/Messaging/Service/TemplateImageManager.php +++ b/src/Domain/Messaging/Service/Manager/TemplateImageManager.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Domain\Messaging\Service; +namespace PhpList\Core\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use DOMDocument; diff --git a/src/Domain/Messaging/Service/TemplateManager.php b/src/Domain/Messaging/Service/Manager/TemplateManager.php similarity index 98% rename from src/Domain/Messaging/Service/TemplateManager.php rename to src/Domain/Messaging/Service/Manager/TemplateManager.php index 35678484..7de31843 100644 --- a/src/Domain/Messaging/Service/TemplateManager.php +++ b/src/Domain/Messaging/Service/Manager/TemplateManager.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Domain\Messaging\Service; +namespace PhpList\Core\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use PhpList\Core\Domain\Common\Model\ValidationContext; diff --git a/tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php similarity index 97% rename from tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php rename to tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php index 22487d58..67464674 100644 --- a/tests/Unit/Domain/Messaging/Service/BounceRegexManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service; +namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use PhpList\Core\Domain\Messaging\Model\Bounce; use PhpList\Core\Domain\Messaging\Model\BounceRegex; use PhpList\Core\Domain\Messaging\Model\BounceRegexBounce; use PhpList\Core\Domain\Messaging\Repository\BounceRegexRepository; -use PhpList\Core\Domain\Messaging\Service\BounceRegexManager; +use PhpList\Core\Domain\Messaging\Service\Manager\BounceRegexManager; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use ReflectionProperty; diff --git a/tests/Unit/Domain/Messaging/Service/ListMessageManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/ListMessageManagerTest.php similarity index 98% rename from tests/Unit/Domain/Messaging/Service/ListMessageManagerTest.php rename to tests/Unit/Domain/Messaging/Service/Manager/ListMessageManagerTest.php index 2ec4180f..2f1af5fe 100644 --- a/tests/Unit/Domain/Messaging/Service/ListMessageManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/ListMessageManagerTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service; +namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager; use DateTime; use Doctrine\ORM\EntityManagerInterface; diff --git a/tests/Unit/Domain/Messaging/Service/MessageManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/MessageManagerTest.php similarity index 97% rename from tests/Unit/Domain/Messaging/Service/MessageManagerTest.php rename to tests/Unit/Domain/Messaging/Service/Manager/MessageManagerTest.php index 8ee85915..aa1a47e0 100644 --- a/tests/Unit/Domain/Messaging/Service/MessageManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/MessageManagerTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service; +namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager; use PhpList\Core\Domain\Identity\Model\Administrator; use PhpList\Core\Domain\Messaging\Model\Dto\CreateMessageDto; @@ -15,7 +15,7 @@ use PhpList\Core\Domain\Messaging\Model\Message; use PhpList\Core\Domain\Messaging\Repository\MessageRepository; use PhpList\Core\Domain\Messaging\Service\Builder\MessageBuilder; -use PhpList\Core\Domain\Messaging\Service\MessageManager; +use PhpList\Core\Domain\Messaging\Service\Manager\MessageManager; use PHPUnit\Framework\TestCase; class MessageManagerTest extends TestCase diff --git a/tests/Unit/Domain/Messaging/Service/TemplateImageManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/TemplateImageManagerTest.php similarity index 95% rename from tests/Unit/Domain/Messaging/Service/TemplateImageManagerTest.php rename to tests/Unit/Domain/Messaging/Service/Manager/TemplateImageManagerTest.php index bde3569a..7eb6afe7 100644 --- a/tests/Unit/Domain/Messaging/Service/TemplateImageManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/TemplateImageManagerTest.php @@ -2,13 +2,13 @@ declare(strict_types=1); -namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service; +namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use PhpList\Core\Domain\Messaging\Model\Template; use PhpList\Core\Domain\Messaging\Model\TemplateImage; use PhpList\Core\Domain\Messaging\Repository\TemplateImageRepository; -use PhpList\Core\Domain\Messaging\Service\TemplateImageManager; +use PhpList\Core\Domain\Messaging\Service\Manager\TemplateImageManager; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; diff --git a/tests/Unit/Domain/Messaging/Service/TemplateManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/TemplateManagerTest.php similarity index 93% rename from tests/Unit/Domain/Messaging/Service/TemplateManagerTest.php rename to tests/Unit/Domain/Messaging/Service/Manager/TemplateManagerTest.php index fbbb4831..d3748244 100644 --- a/tests/Unit/Domain/Messaging/Service/TemplateManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/TemplateManagerTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service; +namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager; use Doctrine\ORM\EntityManagerInterface; use PhpList\Core\Domain\Messaging\Model\Dto\CreateTemplateDto; use PhpList\Core\Domain\Messaging\Model\Template; use PhpList\Core\Domain\Messaging\Repository\TemplateRepository; -use PhpList\Core\Domain\Messaging\Service\TemplateImageManager; -use PhpList\Core\Domain\Messaging\Service\TemplateManager; +use PhpList\Core\Domain\Messaging\Service\Manager\TemplateImageManager; +use PhpList\Core\Domain\Messaging\Service\Manager\TemplateManager; use PhpList\Core\Domain\Messaging\Validator\TemplateImageValidator; use PhpList\Core\Domain\Messaging\Validator\TemplateLinkValidator; use PHPUnit\Framework\MockObject\MockObject; From f96fca29eac2b3781d758603b1576df9ebe5e6a9 Mon Sep 17 00:00:00 2001 From: Tatevik Date: Mon, 18 Aug 2025 09:54:48 +0400 Subject: [PATCH 3/3] Prop name update admin -> adminId --- src/Domain/Messaging/Model/BounceRegex.php | 16 ++++++++-------- .../Service/Manager/BounceRegexManager.php | 6 +++--- .../Service/Manager/BounceRegexManagerTest.php | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Domain/Messaging/Model/BounceRegex.php b/src/Domain/Messaging/Model/BounceRegex.php index 510aaad8..0401d26b 100644 --- a/src/Domain/Messaging/Model/BounceRegex.php +++ b/src/Domain/Messaging/Model/BounceRegex.php @@ -31,8 +31,8 @@ class BounceRegex implements DomainModel, Identity #[ORM\Column(name: 'listorder', type: 'integer', nullable: true, options: ['default' => 0])] private ?int $listOrder = 0; - #[ORM\Column(type: 'integer', nullable: true)] - private ?int $admin; + #[ORM\Column(name: 'admin', type: 'integer', nullable: true)] + private ?int $adminId; #[ORM\Column(type: 'text', nullable: true)] private ?string $comment; @@ -48,7 +48,7 @@ public function __construct( ?string $regexHash = null, ?string $action = null, ?int $listOrder = 0, - ?int $admin = null, + ?int $adminId = null, ?string $comment = null, ?string $status = null, ?int $count = 0 @@ -57,7 +57,7 @@ public function __construct( $this->regexHash = $regexHash; $this->action = $action; $this->listOrder = $listOrder; - $this->admin = $admin; + $this->adminId = $adminId; $this->comment = $comment; $this->status = $status; $this->count = $count; @@ -112,14 +112,14 @@ public function setListOrder(?int $listOrder): self return $this; } - public function getAdmin(): ?int + public function getAdminId(): ?int { - return $this->admin; + return $this->adminId; } - public function setAdmin(?int $admin): self + public function setAdminId(?int $adminId): self { - $this->admin = $admin; + $this->adminId = $adminId; return $this; } diff --git a/src/Domain/Messaging/Service/Manager/BounceRegexManager.php b/src/Domain/Messaging/Service/Manager/BounceRegexManager.php index 22daa832..c9d60580 100644 --- a/src/Domain/Messaging/Service/Manager/BounceRegexManager.php +++ b/src/Domain/Messaging/Service/Manager/BounceRegexManager.php @@ -30,7 +30,7 @@ public function createOrUpdateFromPattern( string $regex, ?string $action = null, ?int $listOrder = 0, - ?int $admin = null, + ?int $adminId = null, ?string $comment = null, ?string $status = null ): BounceRegex { @@ -42,7 +42,7 @@ public function createOrUpdateFromPattern( $existing->setRegex($regex) ->setAction($action ?? $existing->getAction()) ->setListOrder($listOrder ?? $existing->getListOrder()) - ->setAdmin($admin ?? $existing->getAdmin()) + ->setAdminId($adminId ?? $existing->getAdminId()) ->setComment($comment ?? $existing->getComment()) ->setStatus($status ?? $existing->getStatus()); @@ -56,7 +56,7 @@ public function createOrUpdateFromPattern( regexHash: $regexHash, action: $action, listOrder: $listOrder, - admin: $admin, + adminId: $adminId, comment: $comment, status: $status, count: 0 diff --git a/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php b/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php index 67464674..1cd432bc 100644 --- a/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php +++ b/tests/Unit/Domain/Messaging/Service/Manager/BounceRegexManagerTest.php @@ -49,7 +49,7 @@ public function testCreateNewRegex(): void regex: $pattern, action: 'delete', listOrder: 5, - admin: 1, + adminId: 1, comment: 'test', status: 'active' ); @@ -59,7 +59,7 @@ public function testCreateNewRegex(): void $this->assertSame($expectedHash, $regex->getRegexHash()); $this->assertSame('delete', $regex->getAction()); $this->assertSame(5, $regex->getListOrder()); - $this->assertSame(1, $regex->getAdmin()); + $this->assertSame(1, $regex->getAdminId()); $this->assertSame('test', $regex->getComment()); $this->assertSame('active', $regex->getStatus()); } @@ -74,7 +74,7 @@ public function testUpdateExistingRegex(): void regexHash: $hash, action: 'keep', listOrder: 0, - admin: null, + adminId: null, comment: null, status: 'inactive', count: 3 @@ -93,14 +93,14 @@ public function testUpdateExistingRegex(): void regex: $pattern, action: 'delete', listOrder: 10, - admin: 2, + adminId: 2, comment: 'upd', status: 'active' ); $this->assertSame('delete', $updated->getAction()); $this->assertSame(10, $updated->getListOrder()); - $this->assertSame(2, $updated->getAdmin()); + $this->assertSame(2, $updated->getAdminId()); $this->assertSame('upd', $updated->getComment()); $this->assertSame('active', $updated->getStatus()); $this->assertSame($hash, $updated->getRegexHash());