Skip to content

Commit 6a6974a

Browse files
committed
ISSUE-345: subscriber attribute value
1 parent ed89e03 commit 6a6974a

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

config/services/normalizers.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,9 @@ services:
4747
tags: [ 'serializer.normalizer' ]
4848
autowire: true
4949

50+
PhpList\RestBundle\Serializer\SubscriberAttributeValueNormalizer:
51+
tags: [ 'serializer.normalizer' ]
52+
autowire: true
53+
5054
PhpList\RestBundle\Serializer\CursorPaginationNormalizer:
5155
autowire: true

src/Controller/AttributeDefinitionController.php renamed to src/Controller/SubscriberAttributeDefinitionController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
use Symfony\Component\Routing\Attribute\Route;
2121

2222
#[Route('/attributes')]
23-
class AttributeDefinitionController extends BaseController
23+
class SubscriberAttributeDefinitionController extends BaseController
2424
{
2525
private AttributeDefinitionManager $definitionManager;
2626
private AttributeDefinitionNormalizer $normalizer;
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpList\RestBundle\Serializer;
6+
7+
use PhpList\Core\Domain\Model\Subscription\SubscriberAttributeValue;
8+
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
9+
10+
class SubscriberAttributeValueNormalizer implements NormalizerInterface
11+
{
12+
public function __construct(
13+
private readonly AttributeDefinitionNormalizer $attributeDefinitionNormalizer,
14+
private readonly SubscriberNormalizer $subscriberNormalizer,
15+
) {
16+
}
17+
18+
/**
19+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
20+
*/
21+
public function normalize($object, string $format = null, array $context = []): array
22+
{
23+
if (!$object instanceof SubscriberAttributeValue) {
24+
return [];
25+
}
26+
27+
return [
28+
'subscriber' => $this->subscriberNormalizer->normalize($object->getSubscriber()),
29+
'definition' => $this->attributeDefinitionNormalizer->normalize($object->getAttributeDefinition()),
30+
'value' => $object->getValue(),
31+
];
32+
}
33+
34+
/**
35+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
36+
*/
37+
public function supportsNormalization($data, string $format = null): bool
38+
{
39+
return $data instanceof SubscriberAttributeValue;
40+
}
41+
}

tests/Integration/Controller/AttributeDefinitionControllerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace PhpList\RestBundle\Tests\Integration\Controller;
66

77
use PhpList\Core\Domain\Repository\Subscription\SubscriberAttributeDefinitionRepository;
8-
use PhpList\RestBundle\Controller\AttributeDefinitionController;
8+
use PhpList\RestBundle\Controller\SubscriberAttributeDefinitionController;
99
use PhpList\RestBundle\Tests\Integration\Controller\Fixtures\Identity\AdministratorFixture;
1010
use PhpList\RestBundle\Tests\Integration\Controller\Fixtures\Identity\AdministratorTokenFixture;
1111
use PhpList\RestBundle\Tests\Integration\Controller\Fixtures\Subscription\AttributeDefinitionFixture;
@@ -15,8 +15,8 @@ class AttributeDefinitionControllerTest extends AbstractTestController
1515
public function testControllerIsAvailableViaContainer()
1616
{
1717
self::assertInstanceOf(
18-
AttributeDefinitionController::class,
19-
self::getContainer()->get(AttributeDefinitionController::class)
18+
SubscriberAttributeDefinitionController::class,
19+
self::getContainer()->get(SubscriberAttributeDefinitionController::class)
2020
);
2121
}
2222

0 commit comments

Comments
 (0)