Skip to content

Commit 6ebd05c

Browse files
committed
feat: #465 add Giveaway as defined in api 7.0
1 parent d9d4fe5 commit 6ebd05c

File tree

6 files changed

+258
-0
lines changed

6 files changed

+258
-0
lines changed

src/Types/GiveawayCreated.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
use TelegramBot\Api\BaseType;
66
use TelegramBot\Api\TypeInterface;
77

8+
/**
9+
* Class GiveawayCreated.
10+
* This object represents a service message about the creation of a scheduled giveaway.
11+
* Currently holds no information.
12+
*/
813
class GiveawayCreated extends BaseType implements TypeInterface
914
{
1015
}

tests/Types/ArrayOfChatTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace TelegramBot\Api\Test\Types;
4+
5+
use TelegramBot\Api\Types\Chat;
6+
use TelegramBot\Api\Types\ArrayOfChat;
7+
use PHPUnit\Framework\TestCase;
8+
9+
class ArrayOfChatTest extends TestCase
10+
{
11+
public function testFromResponse()
12+
{
13+
$items = ArrayOfChat::fromResponse([
14+
[
15+
'id' => 123456789,
16+
'type' => 'group',
17+
],
18+
[
19+
'id' => 123456788,
20+
'type' => 'private',
21+
]
22+
]);
23+
24+
$expected = [
25+
Chat::fromResponse([
26+
'id' => 123456789,
27+
'type' => 'group',
28+
]),
29+
Chat::fromResponse([
30+
'id' => 123456788,
31+
'type' => 'private',
32+
])
33+
];
34+
35+
foreach ($items as $key => $item) {
36+
$this->assertEquals($expected[$key], $item);
37+
}
38+
}
39+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace TelegramBot\Api\Test\Types;
4+
5+
use TelegramBot\Api\Test\AbstractTypeTest;
6+
use TelegramBot\Api\Types\GiveawayCompleted;
7+
8+
class GiveawayCompletedTest extends AbstractTypeTest
9+
{
10+
protected static function getType()
11+
{
12+
return GiveawayCompleted::class;
13+
}
14+
15+
public static function getMinResponse()
16+
{
17+
return [
18+
'winner_count' => 1
19+
];
20+
}
21+
22+
public static function getFullResponse()
23+
{
24+
return [
25+
'winner_count' => 1,
26+
'unclaimed_prize_count' => 1,
27+
'giveaway_message' => MessageTest::getMinResponse()
28+
];
29+
}
30+
31+
protected function assertMinItem($item)
32+
{
33+
$this->assertEquals(1, $item->getWinnerCount());
34+
}
35+
36+
protected function assertFullItem($item)
37+
{
38+
$this->assertEquals(1, $item->getWinnerCount());
39+
$this->assertEquals(1, $item->getUnclaimedPrizeCount());
40+
$this->assertEquals(MessageTest::createMinInstance(), $item->getGiveawayMessage());
41+
}
42+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace TelegramBot\Api\Test\Types;
4+
5+
use TelegramBot\Api\Test\AbstractTypeTest;
6+
use TelegramBot\Api\Types\GiveawayCreated;
7+
8+
class GiveawayCreatedTest extends AbstractTypeTest
9+
{
10+
protected static function getType()
11+
{
12+
return GiveawayCreated::class;
13+
}
14+
15+
public static function getMinResponse()
16+
{
17+
return [];
18+
}
19+
20+
public static function getFullResponse()
21+
{
22+
return [];
23+
}
24+
25+
protected function assertMinItem($item)
26+
{
27+
}
28+
29+
protected function assertFullItem($item)
30+
{
31+
}
32+
}

tests/Types/GiveawayTest.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
namespace TelegramBot\Api\Test\Types;
4+
5+
use TelegramBot\Api\Types\Giveaway;
6+
use TelegramBot\Api\Test\AbstractTypeTest;
7+
8+
class GiveawayTest extends AbstractTypeTest
9+
{
10+
protected static function getType()
11+
{
12+
return Giveaway::class;
13+
}
14+
15+
public static function getMinResponse()
16+
{
17+
return [
18+
'chats' => [
19+
ChatTest::getMinResponse()
20+
],
21+
'winners_selection_date' => 1682343643,
22+
'winner_count' => 1,
23+
];
24+
}
25+
26+
public static function getFullResponse()
27+
{
28+
return [
29+
'chats' => [
30+
ChatTest::getMinResponse()
31+
],
32+
'winners_selection_date' => 1682343643,
33+
'winner_count' => 1,
34+
'only_new_members' => true,
35+
'has_public_winners' => true,
36+
'prize_description' => 'prize',
37+
'country_codes' => ['RU'],
38+
'premium_subscription_month_count' => 1,
39+
];
40+
}
41+
42+
protected function assertMinItem($item)
43+
{
44+
$this->assertEquals(1, $item->getWinnerCount());
45+
$this->assertEquals(1682343643, $item->getWinnersSelectionDate());
46+
$this->assertIsArray($item->getChats());
47+
48+
$this->assertNull($item->getOnlyNewMembers());
49+
$this->assertNull($item->getHasPublicWinners());
50+
$this->assertNull($item->getPrizeDescription());
51+
$this->assertNull($item->getCountryCodes());
52+
$this->assertNull($item->getPremiumSubscriptionMonthCount());
53+
}
54+
55+
protected function assertFullItem($item)
56+
{
57+
$this->assertEquals(1, $item->getWinnerCount());
58+
$this->assertEquals(1682343643, $item->getWinnersSelectionDate());
59+
$this->assertIsArray($item->getChats());
60+
$this->assertTrue($item->getOnlyNewMembers());
61+
$this->assertTrue($item->getHasPublicWinners());
62+
$this->assertEquals('prize', $item->getPrizeDescription());
63+
$this->assertIsArray($item->getCountryCodes());
64+
$this->assertEquals(1, $item->getPremiumSubscriptionMonthCount());
65+
}
66+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
namespace TelegramBot\Api\Test\Types;
4+
5+
use TelegramBot\Api\Test\AbstractTypeTest;
6+
use TelegramBot\Api\Types\GiveawayWinners;
7+
8+
class GiveawayWinnersTest extends AbstractTypeTest
9+
{
10+
protected static function getType()
11+
{
12+
return GiveawayWinners::class;
13+
}
14+
15+
public static function getMinResponse()
16+
{
17+
return [
18+
'chat' => ChatTest::getMinResponse(),
19+
'giveaway_message_id' => 1,
20+
'winners_selection_date' => 1682343643,
21+
'winner_count' => 1,
22+
'winners' => [
23+
UserTest::getMinResponse()
24+
],
25+
];
26+
}
27+
28+
public static function getFullResponse()
29+
{
30+
return [
31+
'chat' => ChatTest::getMinResponse(),
32+
'giveaway_message_id' => 1,
33+
'winners_selection_date' => 1682343643,
34+
'winner_count' => 1,
35+
'winners' => [
36+
UserTest::getMinResponse()
37+
],
38+
'additional_chat_count' => 1,
39+
'premium_subscription_month_count' => 1,
40+
'unclaimed_prize_count' => 0,
41+
'only_new_members' => true,
42+
'was_refunded' => true,
43+
'prize_description' => 'prize',
44+
];
45+
}
46+
47+
protected function assertMinItem($item)
48+
{
49+
$this->assertEquals(1, $item->getGiveawayMessageId());
50+
$this->assertEquals(1682343643, $item->getWinnersSelectionDate());
51+
$this->assertEquals(1, $item->getWinnerCount());
52+
$this->assertEquals([UserTest::createMinInstance()], $item->getWinners());
53+
$this->assertNull($item->getAdditionalChatCount());
54+
$this->assertNull($item->getPremiumSubscriptionMonthCount());
55+
$this->assertNull($item->getUnclaimedPrizeCount());
56+
$this->assertNull($item->getOnlyNewMembers());
57+
$this->assertNull($item->getWasRefunded());
58+
$this->assertNull($item->getPrizeDescription());
59+
}
60+
61+
protected function assertFullItem($item)
62+
{
63+
$this->assertEquals(1, $item->getGiveawayMessageId());
64+
$this->assertEquals(1682343643, $item->getWinnersSelectionDate());
65+
$this->assertEquals(1, $item->getWinnerCount());
66+
$this->assertEquals([UserTest::createMinInstance()], $item->getWinners());
67+
$this->assertEquals(1, $item->getAdditionalChatCount());
68+
$this->assertEquals(1, $item->getPremiumSubscriptionMonthCount());
69+
$this->assertEquals(0, $item->getUnclaimedPrizeCount());
70+
$this->assertTrue($item->getOnlyNewMembers());
71+
$this->assertTrue($item->getWasRefunded());
72+
$this->assertEquals('prize', $item->getPrizeDescription());
73+
}
74+
}

0 commit comments

Comments
 (0)