Skip to content

Commit f134842

Browse files
committed
SubscriberAttributeManager
1 parent 12c65e0 commit f134842

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

resources/translations/messages.en.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,10 @@
408408
<source>Subscribe page not found</source>
409409
<target>Subscribe page not found</target>
410410
</trans-unit>
411+
<trans-unit id="subscription.value_is_required">
412+
<source>Value is required</source>
413+
<target>Value is required</target>
414+
</trans-unit>
411415

412416
</body>
413417
</file>

src/Domain/Subscription/Exception/SubscriberAttributeCreationException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class SubscriberAttributeCreationException extends RuntimeException
1010
{
1111
private int $statusCode;
1212

13-
public function __construct(string $message, int $statusCode)
13+
public function __construct(string $message, ?int $statusCode = 400)
1414
{
1515
parent::__construct($message);
1616
$this->statusCode = $statusCode;

src/Domain/Subscription/Service/Manager/SubscriberAttributeManager.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,22 @@
1010
use PhpList\Core\Domain\Subscription\Model\SubscriberAttributeDefinition;
1111
use PhpList\Core\Domain\Subscription\Model\SubscriberAttributeValue;
1212
use PhpList\Core\Domain\Subscription\Repository\SubscriberAttributeValueRepository;
13+
use Symfony\Contracts\Translation\TranslatorInterface;
1314

1415
class SubscriberAttributeManager
1516
{
1617
private SubscriberAttributeValueRepository $attributeRepository;
1718
private EntityManagerInterface $entityManager;
19+
private TranslatorInterface $translator;
1820

1921
public function __construct(
2022
SubscriberAttributeValueRepository $attributeRepository,
2123
EntityManagerInterface $entityManager,
24+
TranslatorInterface $translator,
2225
) {
2326
$this->attributeRepository = $attributeRepository;
2427
$this->entityManager = $entityManager;
28+
$this->translator = $translator;
2529
}
2630

2731
public function createOrUpdate(
@@ -38,7 +42,7 @@ public function createOrUpdate(
3842

3943
$value = $value ?? $definition->getDefaultValue();
4044
if ($value === null) {
41-
throw new SubscriberAttributeCreationException('Value is required', 400);
45+
throw new SubscriberAttributeCreationException($this->translator->trans('Value is required'));
4246
}
4347

4448
$subscriberAttribute->setValue($value);

tests/Unit/Domain/Subscription/Service/Manager/SubscriberAttributeManagerTest.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use PhpList\Core\Domain\Subscription\Repository\SubscriberAttributeValueRepository;
1313
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberAttributeManager;
1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Translation\Translator;
1516

1617
class SubscriberAttributeManagerTest extends TestCase
1718
{
@@ -34,7 +35,7 @@ public function testCreateNewSubscriberAttribute(): void
3435
return $attr->getValue() === 'US';
3536
}));
3637

37-
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager);
38+
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager, new Translator('en'));
3839
$attribute = $manager->createOrUpdate($subscriber, $definition, 'US');
3940

4041
self::assertInstanceOf(SubscriberAttributeValue::class, $attribute);
@@ -60,7 +61,7 @@ public function testUpdateExistingSubscriberAttribute(): void
6061
->method('persist')
6162
->with($existing);
6263

63-
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager);
64+
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager, new Translator('en'));
6465
$result = $manager->createOrUpdate($subscriber, $definition, 'Updated');
6566

6667
self::assertSame('Updated', $result->getValue());
@@ -76,7 +77,7 @@ public function testCreateFailsWhenValueAndDefaultAreNull(): void
7677

7778
$subscriberAttrRepo->method('findOneBySubscriberAndAttribute')->willReturn(null);
7879

79-
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager);
80+
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager, new Translator('en'));
8081

8182
$this->expectException(SubscriberAttributeCreationException::class);
8283
$this->expectExceptionMessage('Value is required');
@@ -95,7 +96,7 @@ public function testGetSubscriberAttribute(): void
9596
->with(5, 10)
9697
->willReturn($expected);
9798

98-
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager);
99+
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager, new Translator('en'));
99100
$result = $manager->getSubscriberAttribute(5, 10);
100101

101102
self::assertSame($expected, $result);
@@ -111,7 +112,7 @@ public function testDeleteSubscriberAttribute(): void
111112
->method('remove')
112113
->with($attribute);
113114

114-
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager);
115+
$manager = new SubscriberAttributeManager($subscriberAttrRepo, $entityManager, new Translator('en'));
115116
$manager->delete($attribute);
116117

117118
self::assertTrue(true);

0 commit comments

Comments
 (0)