mirror of
https://github.com/BushlanovDev/max-bot-api-client-php.git
synced 2026-09-03 14:07:54 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dfe2147cd1 | |||
| 3d958f3f92 | |||
| f40dc12d0c | |||
| b726c96366 | |||
| c41221cec7 | |||
| 4fdfca53ee | |||
| 9df8ed8817 | |||
| 455b36ba2a | |||
| efd6261490 |
+1
-1
@@ -28,7 +28,7 @@
|
|||||||
"psr/http-client": "^1.0",
|
"psr/http-client": "^1.0",
|
||||||
"psr/http-factory": "^1.0",
|
"psr/http-factory": "^1.0",
|
||||||
"psr/http-message": "^1.0||^2.0",
|
"psr/http-message": "^1.0||^2.0",
|
||||||
"psr/log": "^3.0"
|
"psr/log": "^1.1||^2.0||^3.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^3.77",
|
"friendsofphp/php-cs-fixer": "^3.77",
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ use RuntimeException;
|
|||||||
*/
|
*/
|
||||||
class Api
|
class Api
|
||||||
{
|
{
|
||||||
public const string LIBRARY_VERSION = '1.6.0';
|
public const string LIBRARY_VERSION = '1.6.3';
|
||||||
|
|
||||||
public const string API_VERSION = '1.2.5';
|
public const string API_VERSION = '1.2.5';
|
||||||
|
|
||||||
|
|||||||
@@ -15,5 +15,9 @@ enum ChatAdminPermission: string
|
|||||||
case ChangeChatInfo = 'change_chat_info';
|
case ChangeChatInfo = 'change_chat_info';
|
||||||
case PinMessage = 'pin_message';
|
case PinMessage = 'pin_message';
|
||||||
case Write = 'write';
|
case Write = 'write';
|
||||||
|
case CanCall = 'can_call';
|
||||||
case EditLink = 'edit_link';
|
case EditLink = 'edit_link';
|
||||||
|
case PostEditDeleteMessage = 'post_edit_delete_message';
|
||||||
|
case EditMessage = 'edit_message';
|
||||||
|
case DeleteMessage = 'delete_message';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,4 +13,5 @@ enum InlineButtonType: string
|
|||||||
case OpenApp = 'open_app';
|
case OpenApp = 'open_app';
|
||||||
case Message = 'message';
|
case Message = 'message';
|
||||||
case Chat = 'chat';
|
case Chat = 'chat';
|
||||||
|
case Clipboard = 'clipboard';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ use BushlanovDev\MaxMessengerBot\Models\Attachments\AudioAttachment;
|
|||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\AbstractInlineButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\AbstractInlineButton;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\CallbackButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\CallbackButton;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\ChatButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\ChatButton;
|
||||||
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\ClipboardButton;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\LinkButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\LinkButton;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\MessageButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\MessageButton;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\OpenAppButton;
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\OpenAppButton;
|
||||||
@@ -300,6 +301,7 @@ readonly class ModelFactory
|
|||||||
InlineButtonType::RequestGeoLocation => RequestGeoLocationButton::fromArray($data),
|
InlineButtonType::RequestGeoLocation => RequestGeoLocationButton::fromArray($data),
|
||||||
InlineButtonType::Chat => ChatButton::fromArray($data),
|
InlineButtonType::Chat => ChatButton::fromArray($data),
|
||||||
InlineButtonType::OpenApp => OpenAppButton::fromArray($data),
|
InlineButtonType::OpenApp => OpenAppButton::fromArray($data),
|
||||||
|
InlineButtonType::Clipboard => ClipboardButton::fromArray($data),
|
||||||
InlineButtonType::Message => MessageButton::fromArray($data),
|
InlineButtonType::Message => MessageButton::fromArray($data),
|
||||||
default => throw new LogicException(
|
default => throw new LogicException(
|
||||||
'Unknown or unsupported inline button type: ' . ($data['type'] ?? 'none')
|
'Unknown or unsupported inline button type: ' . ($data['type'] ?? 'none')
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline;
|
||||||
|
|
||||||
|
use BushlanovDev\MaxMessengerBot\Enums\InlineButtonType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A button that, when clicked, copies text to the clipboard.
|
||||||
|
*/
|
||||||
|
final readonly class ClipboardButton extends AbstractInlineButton
|
||||||
|
{
|
||||||
|
public ?string $payload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $text Visible button text (1 to 128 characters).
|
||||||
|
* @param string $payload Text which will be copied.
|
||||||
|
*/
|
||||||
|
public function __construct(string $text, string $payload)
|
||||||
|
{
|
||||||
|
parent::__construct(InlineButtonType::Clipboard, $text);
|
||||||
|
|
||||||
|
$this->payload = $payload;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ use BushlanovDev\MaxMessengerBot\LongPollingHandler;
|
|||||||
use BushlanovDev\MaxMessengerBot\ModelFactory;
|
use BushlanovDev\MaxMessengerBot\ModelFactory;
|
||||||
use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
||||||
use BushlanovDev\MaxMessengerBot\WebhookHandler;
|
use BushlanovDev\MaxMessengerBot\WebhookHandler;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -19,6 +20,7 @@ use Psr\Log\LoggerInterface;
|
|||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
|
|
||||||
#[CoversClass(Api::class)]
|
#[CoversClass(Api::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(UpdateDispatcher::class)]
|
#[UsesClass(UpdateDispatcher::class)]
|
||||||
#[UsesClass(WebhookHandler::class)]
|
#[UsesClass(WebhookHandler::class)]
|
||||||
#[UsesClass(LongPollingHandler::class)]
|
#[UsesClass(LongPollingHandler::class)]
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ use InvalidArgumentException;
|
|||||||
use LogicException;
|
use LogicException;
|
||||||
use org\bovigo\vfs\vfsStream;
|
use org\bovigo\vfs\vfsStream;
|
||||||
use phpmock\phpunit\PHPMock;
|
use phpmock\phpunit\PHPMock;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
||||||
use PHPUnit\Framework\Attributes\RunInSeparateProcess;
|
use PHPUnit\Framework\Attributes\RunInSeparateProcess;
|
||||||
@@ -75,6 +76,7 @@ use ReflectionClass;
|
|||||||
use RuntimeException;
|
use RuntimeException;
|
||||||
|
|
||||||
#[CoversClass(Api::class)]
|
#[CoversClass(Api::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Result::class)]
|
#[UsesClass(Result::class)]
|
||||||
#[UsesClass(Client::class)]
|
#[UsesClass(Client::class)]
|
||||||
#[UsesClass(BotInfo::class)]
|
#[UsesClass(BotInfo::class)]
|
||||||
@@ -1667,12 +1669,14 @@ final class ApiTest extends TestCase
|
|||||||
$admins = [
|
$admins = [
|
||||||
new ChatAdmin(101, [ChatAdminPermission::Write]),
|
new ChatAdmin(101, [ChatAdminPermission::Write]),
|
||||||
new ChatAdmin(202, [ChatAdminPermission::PinMessage]),
|
new ChatAdmin(202, [ChatAdminPermission::PinMessage]),
|
||||||
|
new ChatAdmin(303, [ChatAdminPermission::EditMessage, ChatAdminPermission::CanCall], 'SuperUser'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$expectedBody = [
|
$expectedBody = [
|
||||||
'admins' => [
|
'admins' => [
|
||||||
['user_id' => 101, 'permissions' => ['write'], 'alias' => null],
|
['user_id' => 101, 'permissions' => ['write'], 'alias' => null],
|
||||||
['user_id' => 202, 'permissions' => ['pin_message'], 'alias' => null],
|
['user_id' => 202, 'permissions' => ['pin_message'], 'alias' => null],
|
||||||
|
['user_id' => 303, 'permissions' => ['edit_message', 'can_call'], 'alias' => 'SuperUser'],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
$rawResponse = ['success' => true];
|
$rawResponse = ['success' => true];
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ use BushlanovDev\MaxMessengerBot\Exceptions\SerializationException;
|
|||||||
use BushlanovDev\MaxMessengerBot\Exceptions\UnauthorizedException;
|
use BushlanovDev\MaxMessengerBot\Exceptions\UnauthorizedException;
|
||||||
use GuzzleHttp\Psr7\HttpFactory;
|
use GuzzleHttp\Psr7\HttpFactory;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
@@ -32,6 +33,7 @@ use Psr\Http\Message\StreamInterface;
|
|||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
#[CoversClass(Client::class)]
|
#[CoversClass(Client::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
final class ClientTest extends TestCase
|
final class ClientTest extends TestCase
|
||||||
{
|
{
|
||||||
private const string FAKE_TOKEN = '12345:abcdef';
|
private const string FAKE_TOKEN = '12345:abcdef';
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace BushlanovDev\MaxMessengerBot\Tests\Laravel\Commands;
|
|||||||
use BushlanovDev\MaxMessengerBot\Laravel\Commands\PollingStartCommand;
|
use BushlanovDev\MaxMessengerBot\Laravel\Commands\PollingStartCommand;
|
||||||
use BushlanovDev\MaxMessengerBot\Laravel\MaxBotManager;
|
use BushlanovDev\MaxMessengerBot\Laravel\MaxBotManager;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -15,6 +16,7 @@ use Symfony\Component\Console\Application as ConsoleApplication;
|
|||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
|
||||||
#[CoversClass(PollingStartCommand::class)]
|
#[CoversClass(PollingStartCommand::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(MaxBotManager::class)]
|
#[UsesClass(MaxBotManager::class)]
|
||||||
final class PollingStartCommandTest extends TestCase
|
final class PollingStartCommandTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use BushlanovDev\MaxMessengerBot\Enums\UpdateType;
|
|||||||
use BushlanovDev\MaxMessengerBot\Laravel\Commands\WebhookListCommand;
|
use BushlanovDev\MaxMessengerBot\Laravel\Commands\WebhookListCommand;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Subscription;
|
use BushlanovDev\MaxMessengerBot\Models\Subscription;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -17,6 +18,7 @@ use Symfony\Component\Console\Application as ConsoleApplication;
|
|||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
|
||||||
#[CoversClass(WebhookListCommand::class)]
|
#[CoversClass(WebhookListCommand::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Api::class)]
|
#[UsesClass(Api::class)]
|
||||||
#[UsesClass(Subscription::class)]
|
#[UsesClass(Subscription::class)]
|
||||||
final class WebhookListCommandTest extends TestCase
|
final class WebhookListCommandTest extends TestCase
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ use BushlanovDev\MaxMessengerBot\Laravel\Commands\WebhookSubscribeCommand;
|
|||||||
use BushlanovDev\MaxMessengerBot\Models\Result;
|
use BushlanovDev\MaxMessengerBot\Models\Result;
|
||||||
use Illuminate\Contracts\Config\Repository as Config;
|
use Illuminate\Contracts\Config\Repository as Config;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -18,6 +19,7 @@ use Symfony\Component\Console\Application as ConsoleApplication;
|
|||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
|
||||||
#[CoversClass(WebhookSubscribeCommand::class)]
|
#[CoversClass(WebhookSubscribeCommand::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Api::class)]
|
#[UsesClass(Api::class)]
|
||||||
#[UsesClass(Result::class)]
|
#[UsesClass(Result::class)]
|
||||||
final class WebhookSubscribeCommandTest extends TestCase
|
final class WebhookSubscribeCommandTest extends TestCase
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use BushlanovDev\MaxMessengerBot\Api;
|
|||||||
use BushlanovDev\MaxMessengerBot\Laravel\Commands\WebhookUnsubscribeCommand;
|
use BushlanovDev\MaxMessengerBot\Laravel\Commands\WebhookUnsubscribeCommand;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\Result;
|
use BushlanovDev\MaxMessengerBot\Models\Result;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -16,6 +17,7 @@ use Symfony\Component\Console\Application as ConsoleApplication;
|
|||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
|
||||||
#[CoversClass(WebhookUnsubscribeCommand::class)]
|
#[CoversClass(WebhookUnsubscribeCommand::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Api::class)]
|
#[UsesClass(Api::class)]
|
||||||
#[UsesClass(Result::class)]
|
#[UsesClass(Result::class)]
|
||||||
final class WebhookUnsubscribeCommandTest extends TestCase
|
final class WebhookUnsubscribeCommandTest extends TestCase
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ use Illuminate\Container\Container;
|
|||||||
use Illuminate\Contracts\Config\Repository;
|
use Illuminate\Contracts\Config\Repository;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
@@ -28,6 +29,7 @@ use PHPUnit\Framework\TestCase;
|
|||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
#[CoversClass(MaxBotManager::class)]
|
#[CoversClass(MaxBotManager::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Message::class)]
|
#[UsesClass(Message::class)]
|
||||||
#[UsesClass(MessageBody::class)]
|
#[UsesClass(MessageBody::class)]
|
||||||
#[UsesClass(Recipient::class)]
|
#[UsesClass(Recipient::class)]
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ use InvalidArgumentException;
|
|||||||
use LogicException;
|
use LogicException;
|
||||||
use Orchestra\Testbench\TestCase;
|
use Orchestra\Testbench\TestCase;
|
||||||
use phpmock\phpunit\PHPMock;
|
use phpmock\phpunit\PHPMock;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
||||||
@@ -33,6 +34,7 @@ use Psr\Log\NullLogger;
|
|||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
|
|
||||||
#[CoversClass(MaxBotServiceProvider::class)]
|
#[CoversClass(MaxBotServiceProvider::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(Api::class)]
|
#[UsesClass(Api::class)]
|
||||||
#[UsesClass(Client::class)]
|
#[UsesClass(Client::class)]
|
||||||
#[UsesClass(UpdateDispatcher::class)]
|
#[UsesClass(UpdateDispatcher::class)]
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
|||||||
use Error;
|
use Error;
|
||||||
use Exception;
|
use Exception;
|
||||||
use phpmock\phpunit\PHPMock;
|
use phpmock\phpunit\PHPMock;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
||||||
@@ -26,6 +27,7 @@ use PHPUnit\Framework\TestCase;
|
|||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
#[CoversClass(LongPollingHandler::class)]
|
#[CoversClass(LongPollingHandler::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(UpdateDispatcher::class)]
|
#[UsesClass(UpdateDispatcher::class)]
|
||||||
#[UsesClass(UpdateList::class)]
|
#[UsesClass(UpdateList::class)]
|
||||||
#[UsesClass(AbstractUpdate::class)]
|
#[UsesClass(AbstractUpdate::class)]
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace BushlanovDev\MaxMessengerBot\Tests\Models\Attachments\Buttons\Inline;
|
||||||
|
|
||||||
|
use BushlanovDev\MaxMessengerBot\Enums\InlineButtonType;
|
||||||
|
use BushlanovDev\MaxMessengerBot\Models\Attachments\Buttons\Inline\ClipboardButton;
|
||||||
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
#[CoversClass(ClipboardButton::class)]
|
||||||
|
final class ClipboardButtonTest extends TestCase
|
||||||
|
{
|
||||||
|
#[Test]
|
||||||
|
public function toArraySerializesCorrectly(): void
|
||||||
|
{
|
||||||
|
$button = new ClipboardButton('display', 'copy');
|
||||||
|
|
||||||
|
$expectedArray = [
|
||||||
|
'payload' => 'copy',
|
||||||
|
'type' => InlineButtonType::Clipboard->value,
|
||||||
|
'text' => 'display',
|
||||||
|
];
|
||||||
|
|
||||||
|
$resultArray = $button->toArray();
|
||||||
|
|
||||||
|
$this->assertSame($expectedArray, $resultArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Test]
|
||||||
|
public function fromArrayHydratesCorrectly(): void
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'type' => 'clipboard',
|
||||||
|
'text' => 'display',
|
||||||
|
'payload' => 'copy'
|
||||||
|
];
|
||||||
|
|
||||||
|
$button = ClipboardButton::fromArray($data);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ClipboardButton::class, $button);
|
||||||
|
$this->assertSame(InlineButtonType::Clipboard, $button->type);
|
||||||
|
$this->assertSame('display', $button->text);
|
||||||
|
$this->assertSame('copy', $button->payload);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,12 +14,14 @@ use BushlanovDev\MaxMessengerBot\Models\Updates\BotStartedUpdate;
|
|||||||
use BushlanovDev\MaxMessengerBot\Models\Updates\MessageCreatedUpdate;
|
use BushlanovDev\MaxMessengerBot\Models\Updates\MessageCreatedUpdate;
|
||||||
use BushlanovDev\MaxMessengerBot\Models\UserWithPhoto;
|
use BushlanovDev\MaxMessengerBot\Models\UserWithPhoto;
|
||||||
use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\Test;
|
use PHPUnit\Framework\Attributes\Test;
|
||||||
use PHPUnit\Framework\Attributes\UsesClass;
|
use PHPUnit\Framework\Attributes\UsesClass;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
#[CoversClass(UpdateDispatcher::class)]
|
#[CoversClass(UpdateDispatcher::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(UserWithPhoto::class)]
|
#[UsesClass(UserWithPhoto::class)]
|
||||||
#[UsesClass(BotStartedUpdate::class)]
|
#[UsesClass(BotStartedUpdate::class)]
|
||||||
#[UsesClass(Message::class)]
|
#[UsesClass(Message::class)]
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use BushlanovDev\MaxMessengerBot\UpdateDispatcher;
|
|||||||
use BushlanovDev\MaxMessengerBot\WebhookHandler;
|
use BushlanovDev\MaxMessengerBot\WebhookHandler;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
use phpmock\phpunit\PHPMock;
|
use phpmock\phpunit\PHPMock;
|
||||||
|
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
use PHPUnit\Framework\Attributes\PreserveGlobalState;
|
||||||
@@ -32,6 +33,7 @@ use Psr\Http\Message\StreamInterface;
|
|||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
#[CoversClass(WebhookHandler::class)]
|
#[CoversClass(WebhookHandler::class)]
|
||||||
|
#[AllowMockObjectsWithoutExpectations]
|
||||||
#[UsesClass(UpdateDispatcher::class)]
|
#[UsesClass(UpdateDispatcher::class)]
|
||||||
#[UsesClass(Message::class)]
|
#[UsesClass(Message::class)]
|
||||||
#[UsesClass(MessageBody::class)]
|
#[UsesClass(MessageBody::class)]
|
||||||
|
|||||||
Reference in New Issue
Block a user