From 395d6c3b2e7b0f810d196d06c5256a7ddb639112 Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Fri, 3 Jan 2025 09:25:09 +0100 Subject: [PATCH] add subscription process delete endpoint --- src/Resources/SubscriptionProcess.php | 13 ++++++++ .../Resources/SubscriptionProcessTest.php | 30 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/Resources/SubscriptionProcess.php b/src/Resources/SubscriptionProcess.php index fd23e8a..eb2bb8c 100644 --- a/src/Resources/SubscriptionProcess.php +++ b/src/Resources/SubscriptionProcess.php @@ -102,4 +102,17 @@ class SubscriptionProcess extends Model ) ); } + + /** + * @throws BaseException + */ + public function delete(string $listId): bool + { + return (bool) current( + $this->connection->requestAndParse( + 'DELETE', + 'list/'.urlencode(trim($listId)).'.json' + ) + ); + } } diff --git a/tests/integration/Resources/SubscriptionProcessTest.php b/tests/integration/Resources/SubscriptionProcessTest.php index 218da26..6fe99e3 100644 --- a/tests/integration/Resources/SubscriptionProcessTest.php +++ b/tests/integration/Resources/SubscriptionProcessTest.php @@ -199,4 +199,34 @@ class SubscriptionProcessTest extends IntegrationTestCase yield 'missing or empty list id' => [new Response(404, [], '["Kein Opt-In-Prozess mit dieser ID."]'), null, true]; yield 'access denied' => [new Response(403, [], '["API Zugriff verweigert"]'), null, true]; } + + /** + * @test + * @throws ReflectionException + * @covers \D3\KlicktippPhpClient\Resources\SubscriptionProcess::delete + * @dataProvider deleteDataProvider + */ + public function testDelete(ResponseInterface $response, ?bool $expected, bool $expectException = false): void + { + $sut = new SubscriptionProcess($this->getConnectionMock($response)); + + if ($expectException) { + $this->expectException(BaseException::class); + } + + $this->assertEquals( + $expected, + $this->callMethod( + $sut, + 'delete', + ['2354758'] + ) + ); + } + + public static function deleteDataProvider(): Generator + { + yield 'success' => [new Response(200, [], '[true]'), true]; + yield 'access denied' => [new Response(403, [], '["API Zugriff verweigert"]'), null, true]; + } }