vk/hood/vk/tests/api/methods/messagesTest.php

212 lines
6.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
use PHPUnit\Framework\TestCase;
use hood\vk\core;
use hood\vk\robots\robot;
use hood\vk\tests\settings;
use hood\accounts\vk as account;
/**
* @testdox Сообщения
*/
final class messagesTest extends TestCase
{
use settings;
/**
* @var core $core Ядро фреймворка
*/
private static core $core;
/**
* @var account $account Аккаунт
*/
protected static account $account;
/**
* @var robot $robot Робот
*/
private static robot $robot;
/**
* @testdox Инициализация аккаунта
* @beforeClass
*/
public function testAccountInit(): void
{
// Проверка входных данных
if (empty(self::$project_id)) {
self::markTestSkipped('Не инициализирован идентификатор проекта');
}
// Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true;
if (empty(self::$key)) {
// Если не указан ключ
// Проверка входных данных
if (empty(self::$login)) {
self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) {
self::markTestSkipped('Не инициализирован пароль аккаунта');
}
// Деаутентификация (на всякий случай)
self::$account->deauth();
// Аутентификация и генерация ключа
self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id);
}
$this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта');
}
/**
* @testdox Деинициализация аккаунта
* @afterClass
*/
public static function testAccountDeinit(): void
{
// Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация
self::$account->deauth();
}
/**
* @testdox Инициализация робота
* @before
*/
public function testRobotGroupInit(): void
{
// Инициализация ядра
self::$core = core::init();
// Сохранение количества роботов
$count = self::$core->robots;
// Инициализация робота
self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id);
// Проверка
$this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота');
}
/**
* @testdox Деинициализация робота
* @after
*/
public function testRobotGroupDeinit(): void
{
// Очистка реестра
self::$core->delete();
// Проверка
$this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота');
}
/**
* @testdox Чтение текста
*/
public function testReadText(): void
{
// Проверка выброса исключения
$this->expectExceptionMessage('Текст не инициализирован');
// Чтение текста
self::$robot->message()->text;
}
/**
* @testdox Запись текста
*/
public function testWriteText(): void
{
// Запись текста
self::$robot->message()->text('text');
}
/**
* @testdox Запись текста (повторная)
*/
public function testWriteTextWhenHeIsAlreadyWrited(): void
{
// Запись текста
$message = self::$robot->message()->text('text');
// Повторная запись текста
$message->text('text');
// Проверка
$this->assertSame('texttext', $message->text);
}
/**
* @testdox Запись фото
*/
public function testWriteImage(): void
{
// Запись фото
$message = self::$robot->key(self::$group_key)->message()->image(self::$path_photo);
// Проверка
$this->assertNotEmpty($message->data);
}
/**
* @testdox Чтение Вложений
*/
public function testReadAttachments(): void
{
// Проверка выброса исключеия
$this->expectExceptionMessage('Вложения не инициализированны');
// Проверка
self::$robot->message()->data;
}
/**
* @testdox Запись вложений методом
*/
public function testWriteAttachments(): void
{
// Запись вложений
$message = self::$robot->message();
$message->attachments('Вложение');
// Проверка
$this->assertEquals(['Вложение'], $message->data);
}
/**
* @testdox Отправка текста
*/
public function testSend(): void
{
// Отправка сообщения
self::$robot->key(self::$group_key)->message('Тестовое сообщение')->send(self::$target_id);
}
/**
* @testdox Отправка фотографии
*/
public function testSendPhoto(): void
{
// Запись фото
$message = self::$robot->key(self::$group_key)->message()->image(self::$path_photo);
// Отправка сообщения
$message->send(self::$target_id);
}
}