SendMessage method add sender

This commit is contained in:
Alex
2025-07-14 19:01:42 +03:00
parent 1ca860604c
commit 7a8a096b85
8 changed files with 142 additions and 3 deletions
+11
View File
@@ -15,6 +15,7 @@ use BushlanovDev\MaxMessengerBot\Models\Message;
use BushlanovDev\MaxMessengerBot\Models\MessageBody;
use BushlanovDev\MaxMessengerBot\Models\Recipient;
use BushlanovDev\MaxMessengerBot\Models\Result;
use BushlanovDev\MaxMessengerBot\Models\Sender;
use BushlanovDev\MaxMessengerBot\Models\Subscription;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Test;
@@ -32,6 +33,7 @@ use ReflectionClass;
#[UsesClass(Message::class)]
#[UsesClass(MessageBody::class)]
#[UsesClass(Recipient::class)]
#[UsesClass(Sender::class)]
final class ApiTest extends TestCase
{
private MockObject&ClientApiInterface $clientMock;
@@ -247,6 +249,15 @@ final class ApiTest extends TestCase
'timestamp' => time(),
'body' => ['mid' => 'mid.456.xyz', 'seq' => 101, 'text' => $text],
'recipient' => ['chat_type' => 'dialog', 'user_id' => 123, 'chat_id' => null],
'sender' => [
'user_id' => 123,
'first_name' => 'John',
'last_name' => 'Doe',
'username' => 'johndoe',
'is_bot' => false,
'last_activity_time' => 1678886400000,
],
'url' => 'https://max.ru/message/123',
],
];
+12
View File
@@ -13,6 +13,7 @@ use BushlanovDev\MaxMessengerBot\Models\Message;
use BushlanovDev\MaxMessengerBot\Models\MessageBody;
use BushlanovDev\MaxMessengerBot\Models\Recipient;
use BushlanovDev\MaxMessengerBot\Models\Result;
use BushlanovDev\MaxMessengerBot\Models\Sender;
use BushlanovDev\MaxMessengerBot\Models\Subscription;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Test;
@@ -28,6 +29,7 @@ use PHPUnit\Framework\TestCase;
#[UsesClass(Message::class)]
#[UsesClass(MessageBody::class)]
#[UsesClass(Recipient::class)]
#[UsesClass(Sender::class)]
final class ModelFactoryTest extends TestCase
{
private ModelFactory $factory;
@@ -156,6 +158,15 @@ final class ModelFactoryTest extends TestCase
'user_id' => 123,
'chat_id' => null,
],
'sender' =>[
'user_id' => 123,
'first_name' => 'John',
'last_name' => 'Doe',
'username' => 'johndoe',
'is_bot' => false,
'last_activity_time' => 1678886400000,
],
'url' => 'https://max.ru/message/123',
];
$message = $this->factory->createMessage($rawData);
@@ -163,5 +174,6 @@ final class ModelFactoryTest extends TestCase
$this->assertInstanceOf(Message::class, $message);
$this->assertInstanceOf(MessageBody::class, $message->body);
$this->assertInstanceOf(Recipient::class, $message->recipient);
$this->assertInstanceOf(Sender::class, $message->sender);
}
}
+13
View File
@@ -7,6 +7,7 @@ namespace BushlanovDev\MaxMessengerBot\Tests\Models;
use BushlanovDev\MaxMessengerBot\Models\Message;
use BushlanovDev\MaxMessengerBot\Models\MessageBody;
use BushlanovDev\MaxMessengerBot\Models\Recipient;
use BushlanovDev\MaxMessengerBot\Models\Sender;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\Attributes\UsesClass;
@@ -15,6 +16,7 @@ use PHPUnit\Framework\TestCase;
#[CoversClass(Message::class)]
#[UsesClass(MessageBody::class)]
#[UsesClass(Recipient::class)]
#[UsesClass(Sender::class)]
final class MessageTest extends TestCase
{
#[Test]
@@ -32,6 +34,15 @@ final class MessageTest extends TestCase
'user_id' => 123,
'chat_id' => null,
],
'sender' =>[
'user_id' => 123,
'first_name' => 'John',
'last_name' => 'Doe',
'username' => 'johndoe',
'is_bot' => false,
'last_activity_time' => 1678886400000,
],
'url' => 'https://max.ru/message/123',
];
$message = Message::fromArray($data);
@@ -40,6 +51,8 @@ final class MessageTest extends TestCase
$this->assertSame($data['timestamp'], $message->timestamp);
$this->assertInstanceOf(MessageBody::class, $message->body);
$this->assertInstanceOf(Recipient::class, $message->recipient);
$this->assertInstanceOf(Sender::class, $message->sender);
$this->assertSame($data['url'], $message->url);
$array = $message->toArray();
+1 -1
View File
@@ -10,7 +10,7 @@ use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;
#[CoversClass(Recipient::class)]
class RecipientTest extends TestCase
final class RecipientTest extends TestCase
{
#[Test]
public function canBeCreatedFromArray(): void
+2 -2
View File
@@ -13,7 +13,7 @@ use PHPUnit\Framework\TestCase;
final class ResultTest extends TestCase
{
#[Test]
public function canBeCreatedFromArray(): void
public function canBeCreatedFromArrayWithNullMessage(): void
{
$data = [
'success' => true,
@@ -32,7 +32,7 @@ final class ResultTest extends TestCase
}
#[Test]
public function canBeCreatedFromArrayWithNullMessage(): void
public function canBeCreatedFromArray(): void
{
$data = [
'success' => false,
+70
View File
@@ -0,0 +1,70 @@
<?php
declare(strict_types=1);
namespace BushlanovDev\MaxMessengerBot\Tests\Models;
use BushlanovDev\MaxMessengerBot\Models\Sender;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;
#[CoversClass(Sender::class)]
final class SenderTest extends TestCase
{
#[Test]
public function canBeCreatedFromArray(): void
{
$data = [
'user_id' => 123,
'first_name' => 'John',
'last_name' => 'Doe',
'username' => 'johndoe',
'is_bot' => false,
'last_activity_time' => 1678886400000,
];
$sender = Sender::fromArray($data);
$this->assertInstanceOf(Sender::class, $sender);
$this->assertSame($data['user_id'], $sender->userId);
$this->assertSame($data['first_name'], $sender->firstName);
$this->assertSame($data['last_name'], $sender->lastName);
$this->assertSame($data['username'], $sender->username);
$this->assertSame($data['is_bot'], $sender->isBot);
$this->assertSame($data['last_activity_time'], $sender->lastActivityTime);
$array = $sender->toArray();
$this->assertIsArray($array);
$this->assertSame($data, $array);
}
#[Test]
public function canBeCreatedFromArrayWithOptionalDataNull(): void
{
$data = [
'user_id' => 123,
'first_name' => 'John',
'is_bot' => false,
'last_activity_time' => 1678886400000,
];
$sender = Sender::fromArray($data);
$this->assertInstanceOf(Sender::class, $sender);
$this->assertSame($data['user_id'], $sender->userId);
$this->assertSame($data['first_name'], $sender->firstName);
$this->assertNull($sender->lastName);
$this->assertNull($sender->username);
$this->assertSame($data['is_bot'], $sender->isBot);
$this->assertSame($data['last_activity_time'], $sender->lastActivityTime);
$array = $sender->toArray();
$this->assertIsArray($array);
unset($array['last_name']);
unset($array['username']);
$this->assertSame($data, $array);
}
}