From 6ebd05ca80b840ea06b8b94511613f14a9b6ed2f Mon Sep 17 00:00:00 2001 From: bernard-ng Date: Thu, 1 Aug 2024 17:26:05 +0200 Subject: [PATCH] feat: #465 add Giveaway as defined in api 7.0 --- src/Types/GiveawayCreated.php | 5 ++ tests/Types/ArrayOfChatTest.php | 39 ++++++++++++++ tests/Types/GiveawayCompletedTest.php | 42 +++++++++++++++ tests/Types/GiveawayCreatedTest.php | 32 ++++++++++++ tests/Types/GiveawayTest.php | 66 ++++++++++++++++++++++++ tests/Types/GiveawayWinnersTest.php | 74 +++++++++++++++++++++++++++ 6 files changed, 258 insertions(+) create mode 100644 tests/Types/ArrayOfChatTest.php create mode 100644 tests/Types/GiveawayCompletedTest.php create mode 100644 tests/Types/GiveawayCreatedTest.php create mode 100644 tests/Types/GiveawayTest.php create mode 100644 tests/Types/GiveawayWinnersTest.php diff --git a/src/Types/GiveawayCreated.php b/src/Types/GiveawayCreated.php index 61bb8cf8..cd50ea4d 100644 --- a/src/Types/GiveawayCreated.php +++ b/src/Types/GiveawayCreated.php @@ -5,6 +5,11 @@ use TelegramBot\Api\BaseType; use TelegramBot\Api\TypeInterface; +/** + * Class GiveawayCreated. + * This object represents a service message about the creation of a scheduled giveaway. + * Currently holds no information. + */ class GiveawayCreated extends BaseType implements TypeInterface { } diff --git a/tests/Types/ArrayOfChatTest.php b/tests/Types/ArrayOfChatTest.php new file mode 100644 index 00000000..94776250 --- /dev/null +++ b/tests/Types/ArrayOfChatTest.php @@ -0,0 +1,39 @@ + 123456789, + 'type' => 'group', + ], + [ + 'id' => 123456788, + 'type' => 'private', + ] + ]); + + $expected = [ + Chat::fromResponse([ + 'id' => 123456789, + 'type' => 'group', + ]), + Chat::fromResponse([ + 'id' => 123456788, + 'type' => 'private', + ]) + ]; + + foreach ($items as $key => $item) { + $this->assertEquals($expected[$key], $item); + } + } +} diff --git a/tests/Types/GiveawayCompletedTest.php b/tests/Types/GiveawayCompletedTest.php new file mode 100644 index 00000000..633b6127 --- /dev/null +++ b/tests/Types/GiveawayCompletedTest.php @@ -0,0 +1,42 @@ + 1 + ]; + } + + public static function getFullResponse() + { + return [ + 'winner_count' => 1, + 'unclaimed_prize_count' => 1, + 'giveaway_message' => MessageTest::getMinResponse() + ]; + } + + protected function assertMinItem($item) + { + $this->assertEquals(1, $item->getWinnerCount()); + } + + protected function assertFullItem($item) + { + $this->assertEquals(1, $item->getWinnerCount()); + $this->assertEquals(1, $item->getUnclaimedPrizeCount()); + $this->assertEquals(MessageTest::createMinInstance(), $item->getGiveawayMessage()); + } +} diff --git a/tests/Types/GiveawayCreatedTest.php b/tests/Types/GiveawayCreatedTest.php new file mode 100644 index 00000000..90e948ff --- /dev/null +++ b/tests/Types/GiveawayCreatedTest.php @@ -0,0 +1,32 @@ + [ + ChatTest::getMinResponse() + ], + 'winners_selection_date' => 1682343643, + 'winner_count' => 1, + ]; + } + + public static function getFullResponse() + { + return [ + 'chats' => [ + ChatTest::getMinResponse() + ], + 'winners_selection_date' => 1682343643, + 'winner_count' => 1, + 'only_new_members' => true, + 'has_public_winners' => true, + 'prize_description' => 'prize', + 'country_codes' => ['RU'], + 'premium_subscription_month_count' => 1, + ]; + } + + protected function assertMinItem($item) + { + $this->assertEquals(1, $item->getWinnerCount()); + $this->assertEquals(1682343643, $item->getWinnersSelectionDate()); + $this->assertIsArray($item->getChats()); + + $this->assertNull($item->getOnlyNewMembers()); + $this->assertNull($item->getHasPublicWinners()); + $this->assertNull($item->getPrizeDescription()); + $this->assertNull($item->getCountryCodes()); + $this->assertNull($item->getPremiumSubscriptionMonthCount()); + } + + protected function assertFullItem($item) + { + $this->assertEquals(1, $item->getWinnerCount()); + $this->assertEquals(1682343643, $item->getWinnersSelectionDate()); + $this->assertIsArray($item->getChats()); + $this->assertTrue($item->getOnlyNewMembers()); + $this->assertTrue($item->getHasPublicWinners()); + $this->assertEquals('prize', $item->getPrizeDescription()); + $this->assertIsArray($item->getCountryCodes()); + $this->assertEquals(1, $item->getPremiumSubscriptionMonthCount()); + } +} diff --git a/tests/Types/GiveawayWinnersTest.php b/tests/Types/GiveawayWinnersTest.php new file mode 100644 index 00000000..aac8e408 --- /dev/null +++ b/tests/Types/GiveawayWinnersTest.php @@ -0,0 +1,74 @@ + ChatTest::getMinResponse(), + 'giveaway_message_id' => 1, + 'winners_selection_date' => 1682343643, + 'winner_count' => 1, + 'winners' => [ + UserTest::getMinResponse() + ], + ]; + } + + public static function getFullResponse() + { + return [ + 'chat' => ChatTest::getMinResponse(), + 'giveaway_message_id' => 1, + 'winners_selection_date' => 1682343643, + 'winner_count' => 1, + 'winners' => [ + UserTest::getMinResponse() + ], + 'additional_chat_count' => 1, + 'premium_subscription_month_count' => 1, + 'unclaimed_prize_count' => 0, + 'only_new_members' => true, + 'was_refunded' => true, + 'prize_description' => 'prize', + ]; + } + + protected function assertMinItem($item) + { + $this->assertEquals(1, $item->getGiveawayMessageId()); + $this->assertEquals(1682343643, $item->getWinnersSelectionDate()); + $this->assertEquals(1, $item->getWinnerCount()); + $this->assertEquals([UserTest::createMinInstance()], $item->getWinners()); + $this->assertNull($item->getAdditionalChatCount()); + $this->assertNull($item->getPremiumSubscriptionMonthCount()); + $this->assertNull($item->getUnclaimedPrizeCount()); + $this->assertNull($item->getOnlyNewMembers()); + $this->assertNull($item->getWasRefunded()); + $this->assertNull($item->getPrizeDescription()); + } + + protected function assertFullItem($item) + { + $this->assertEquals(1, $item->getGiveawayMessageId()); + $this->assertEquals(1682343643, $item->getWinnersSelectionDate()); + $this->assertEquals(1, $item->getWinnerCount()); + $this->assertEquals([UserTest::createMinInstance()], $item->getWinners()); + $this->assertEquals(1, $item->getAdditionalChatCount()); + $this->assertEquals(1, $item->getPremiumSubscriptionMonthCount()); + $this->assertEquals(0, $item->getUnclaimedPrizeCount()); + $this->assertTrue($item->getOnlyNewMembers()); + $this->assertTrue($item->getWasRefunded()); + $this->assertEquals('prize', $item->getPrizeDescription()); + } +}