Skip to content

Commit 1c4d23d

Browse files
committed
Import: Add autoConfirm property
1 parent 3ffdae8 commit 1c4d23d

4 files changed

Lines changed: 30 additions & 17 deletions

File tree

src/Subscription/Controller/SubscriptionController.php

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,7 @@ public function __construct(
5454
requestBody: new OA\RequestBody(
5555
description: 'Pass session credentials',
5656
required: true,
57-
content: new OA\JsonContent(
58-
required: ['emails'],
59-
properties: [
60-
new OA\Property(
61-
property: 'emails',
62-
type: 'array',
63-
items: new OA\Items(type: 'string', format: 'email'),
64-
example: ['test1@example.com', 'test2@example.com']
65-
),
66-
]
67-
)
57+
content: new OA\JsonContent(ref: '#/components/schemas/SubscriptionRequest')
6858
),
6959
tags: ['subscriptions'],
7060
parameters: [
@@ -133,7 +123,11 @@ public function createSubscription(
133123

134124
/** @var SubscriptionRequest $subscriptionRequest */
135125
$subscriptionRequest = $this->validator->validate($request, SubscriptionRequest::class);
136-
$subscriptions = $this->subscriptionManager->createSubscriptions($list, $subscriptionRequest->emails);
126+
$subscriptions = $this->subscriptionManager->createSubscriptions(
127+
subscriberList: $list,
128+
emails: $subscriptionRequest->emails,
129+
autoConfirm: $subscriptionRequest->autoConfirm,
130+
);
137131
$this->entityManager->flush();
138132
$normalized = array_map(fn($item) => $this->subscriptionNormalizer->normalize($item), $subscriptions);
139133

src/Subscription/Request/SubscriptionRequest.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,40 @@
44

55
namespace PhpList\RestBundle\Subscription\Request;
66

7+
use OpenApi\Attributes as OA;
78
use PhpList\RestBundle\Common\Request\RequestInterface;
8-
use PhpList\RestBundle\Subscription\Validator\Constraint\EmailExists;
99
use Symfony\Component\Validator\Constraints as Assert;
1010

11+
#[OA\Schema(
12+
schema: 'SubscriptionRequest',
13+
required: ['emails'],
14+
properties: [
15+
new OA\Property(
16+
property: 'emails',
17+
type: 'array',
18+
items: new OA\Items(type: 'string', format: 'email'),
19+
example: ['test1@example.com', 'test2@example.com']
20+
),
21+
new OA\Property(
22+
property: 'autoConfirm',
23+
description: 'Whether to automatically confirm subscriptions',
24+
type: 'boolean',
25+
example: true
26+
),
27+
]
28+
)]
1129
class SubscriptionRequest implements RequestInterface
1230
{
1331
#[Assert\NotBlank]
1432
#[Assert\Type('array')]
1533
#[Assert\All([
1634
new Assert\NotBlank(),
1735
new Assert\Email(),
18-
new EmailExists()
1936
])]
2037
public array $emails = [];
2138

39+
public bool $autoConfirm = false;
40+
2241
public function getDto(): SubscriptionRequest
2342
{
2443
return $this;

tests/Integration/Subscription/Controller/SubscriptionControllerTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,14 @@ public function testDeleteSubscriptionReturnsNoContent(): void
4545
$this->assertHttpNoContent();
4646
}
4747

48-
public function testDeleteSubscriptionForUnknownEmailReturnsValidationError(): void
48+
public function testDeleteSubscriptionForUnknownEmailReturnsNoContent(): void
4949
{
5050
$this->loadFixtures([SubscriberListFixture::class]);
5151

5252
$this->authenticatedJsonRequest('DELETE', '/api/v2/lists/1/subscribers?emails[]=unknown@example.com');
53-
$this->assertHttpNotFound();
53+
$this->assertHttpNoContent();
5454
}
5555

56-
5756
public function testGetListSubscribersCountWithCurrentSessionKeyForExistingListReturnsOkayStatus()
5857
{
5958
$this->loadFixtures([SubscriberListFixture::class]);

tests/Unit/Subscription/Request/SubscriptionRequestTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public function testGetDtoReturnsSelf(): void
1818

1919
$this->assertSame($request, $dto);
2020
$this->assertEquals(['test1@example.com', 'test2@example.com'], $dto->emails);
21+
$this->assertFalse($dto->autoConfirm);
2122
}
2223

2324
public function testGetDtoWithEmptyEmails(): void

0 commit comments

Comments
 (0)