Skip to content

Commit 92eea86

Browse files
committed
Add: history to subscriber object
1 parent 953c350 commit 92eea86

3 files changed

Lines changed: 20 additions & 7 deletions

File tree

src/Subscription/Controller/SubscriberController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ public function getSubscriber(Request $request, int $subscriberId): JsonResponse
339339
{
340340
$this->requireAuthentication($request);
341341

342-
$subscriber = $this->subscriberManager->getSubscriberById($subscriberId);
342+
$subscriber = $this->subscriberManager->getSubscriberDetails($subscriberId);
343343
$subscriberData = $this->subscriberNormalizer->normalize($subscriber);
344344

345345
return $this->json($subscriberData, Response::HTTP_OK);

src/Subscription/Serializer/SubscriberNormalizer.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\Subscriber;
9+
use PhpList\Core\Domain\Subscription\Model\SubscriberHistory;
910
use PhpList\Core\Domain\Subscription\Model\Subscription;
1011
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
1112

@@ -31,13 +32,20 @@
3132
type: 'array',
3233
items: new OA\Items(ref: '#/components/schemas/SubscriberList')
3334
),
35+
new OA\Property(
36+
property: 'history',
37+
type: 'array',
38+
items: new OA\Items(ref: '#/components/schemas/SubscriberHistory')
39+
),
3440
],
3541
type: 'object'
3642
)]
3743
class SubscriberNormalizer implements NormalizerInterface
3844
{
39-
public function __construct(private readonly SubscriberListNormalizer $subscriberListNormalizer)
40-
{
45+
public function __construct(
46+
private readonly SubscriberListNormalizer $subscriberListNormalizer,
47+
private readonly SubscriberHistoryNormalizer $subscriberHistoryNormalizer,
48+
) {
4149
}
4250

4351
/**
@@ -62,6 +70,9 @@ public function normalize($object, string $format = null, array $context = []):
6270
'subscribed_lists' => array_map(function (Subscription $subscription) {
6371
return $this->subscriberListNormalizer->normalize($subscription->getSubscriberList());
6472
}, $object->getSubscriptions()->toArray()),
73+
'history' => array_map(function (SubscriberHistory $history) {
74+
return $this->subscriberHistoryNormalizer->normalize($history);
75+
}, $object->getHistory()),
6576
];
6677
}
6778

tests/Unit/Subscription/Serializer/SubscriberNormalizerTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1010
use PhpList\Core\Domain\Subscription\Model\SubscriberList;
1111
use PhpList\Core\Domain\Subscription\Model\Subscription;
12+
use PhpList\RestBundle\Subscription\Serializer\SubscriberHistoryNormalizer;
1213
use PhpList\RestBundle\Subscription\Serializer\SubscriberListNormalizer;
1314
use PhpList\RestBundle\Subscription\Serializer\SubscriberNormalizer;
1415
use PHPUnit\Framework\TestCase;
@@ -18,7 +19,7 @@ class SubscriberNormalizerTest extends TestCase
1819
{
1920
public function testSupportsNormalization(): void
2021
{
21-
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer());
22+
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer(), new SubscriberHistoryNormalizer());
2223
$subscriber = $this->createMock(Subscriber::class);
2324

2425
$this->assertTrue($normalizer->supportsNormalization($subscriber));
@@ -50,7 +51,7 @@ public function testNormalize(): void
5051
$subscriber->method('isDisabled')->willReturn(false);
5152
$subscriber->method('getSubscriptions')->willReturn(new ArrayCollection([$subscription]));
5253

53-
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer());
54+
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer(), new SubscriberHistoryNormalizer());
5455

5556
$expected = [
5657
'id' => 101,
@@ -73,15 +74,16 @@ public function testNormalize(): void
7374
'public' => true,
7475
'category' => '',
7576
]
76-
]
77+
],
78+
'history' => [],
7779
];
7880

7981
$this->assertSame($expected, $normalizer->normalize($subscriber));
8082
}
8183

8284
public function testNormalizeWithInvalidObject(): void
8385
{
84-
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer());
86+
$normalizer = new SubscriberNormalizer(new SubscriberListNormalizer(), new SubscriberHistoryNormalizer());
8587
$this->assertSame([], $normalizer->normalize(new stdClass()));
8688
}
8789
}

0 commit comments

Comments
 (0)