Некоторые исправления

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-03-10 22:29:25 +10:00
parent 122dc129a5
commit 3c1e4a5b15
8 changed files with 68 additions and 67 deletions

View File

@ -120,7 +120,6 @@ class api implements ArrayAccess
public function __set(string $name, mixed $value): void public function __set(string $name, mixed $value): void
{ {
match ($name) { match ($name) {
'robot' => !isset($this->robot) ? $this->robot = $value : throw new Exception('Запрещено перезаписывать робота'),
'settings' => !isset($this->settings) ? $this->settings = $value : throw new Exception('Запрещено перезаписывать настройки'), 'settings' => !isset($this->settings) ? $this->settings = $value : throw new Exception('Запрещено перезаписывать настройки'),
default => $this->settings[$name] = $value default => $this->settings[$name] = $value
}; };
@ -134,7 +133,6 @@ class api implements ArrayAccess
public function __get(string $name): mixed public function __get(string $name): mixed
{ {
return match ($name) { return match ($name) {
'robot' => $this->robot ?? throw new Exception('Робот не инициализирован'),
'settings' => $this->settings ?? throw new Exception('Настройки не инициализированы'), 'settings' => $this->settings ?? throw new Exception('Настройки не инициализированы'),
default => $this->settings[$name] ?? throw new Exception('Параметр не найден: settings[\'' . $name . '\']') default => $this->settings[$name] ?? throw new Exception('Параметр не найден: settings[\'' . $name . '\']')
}; };

View File

@ -33,7 +33,6 @@ final class messages extends method
/** /**
* @param string|null $text Текст * @param string|null $text Текст
*/ */
protected string|null $text = null;
/** /**
* @var array Массив вложений * @var array Массив вложений
@ -51,7 +50,8 @@ final class messages extends method
* @param robot $robot Робот * @param robot $robot Робот
*/ */
public function __construct( public function __construct(
protected robot $robot protected robot $robot,
protected string|null $text = null
) { ) {
} }
@ -130,9 +130,9 @@ final class messages extends method
* *
* @return array Ответ сервера * @return array Ответ сервера
*/ */
public function send(int|string|array $destination): array public function send(int|string|array $destination): mixed
{ {
// Идентификатор сообщения // Идентификатор
$random_id = time(); $random_id = time();
if ($this->mode = 1) { if ($this->mode = 1) {
@ -146,11 +146,11 @@ final class messages extends method
// Цель отправки // Цель отправки
$this->robot->api->chooseDestination($destination); $this->robot->api->chooseDestination($destination);
// Текст сообщения
$this->robot->api['message'] = $this->text;
// Идентификатор сообщения // Идентификатор сообщения
$this->robot->api['random_id'] = $random_id; $this->robot->api->random_id = $random_id;
// Текст
$this->robot->api->message = $this->text;
// Фильтрация вложений, если они инициализированны // Фильтрация вложений, если они инициализированны
if (isset($this->attachments)) { if (isset($this->attachments)) {
@ -175,9 +175,8 @@ final class messages extends method
} }
} }
// Запрос // Запрос
$request = $this->robot->browser->request(method: 'POST', uri: 'messages.send', options: ['form_params' => $this->robot->api['settings']]); $request = $this->robot->browser->request('POST', 'messages.send', ['form_params' => $this->robot->api->settings]);
// Очистка // Очистка
//unset($settings); //unset($settings);
@ -186,7 +185,7 @@ final class messages extends method
// Если установлен режим 2 (усиленная проверка отправленного сообщения) // Если установлен режим 2 (усиленная проверка отправленного сообщения)
if (!empty($request["response"])) { if (!empty($request["response"])) {
// Если пришел ID сообщения // Ответ получен
// Реиницилазиция // Реиницилазиция
$this->robot->api->reinit(); $this->robot->api->reinit();
@ -195,8 +194,10 @@ final class messages extends method
$this->robot->api['message_ids'] = $request["response"]; $this->robot->api['message_ids'] = $request["response"];
// Запрос // Запрос
if ($this->robot->browser->post(uri: 'https://api.vk.com/method/messages.getById', options: $this->robot->api['settings'])['response']['count'] === 0) { if ($this->robot->browser->request('POST', 'messages.getById', ['form_params' => $this->robot->api->settings])['response']['count'] === 0) {
// Если сообщения не существует, то повторить отправку // Сообщения не существует
// Повторная отправка
$this->send($destination); $this->send($destination);
} }
} else { } else {
@ -204,7 +205,7 @@ final class messages extends method
} }
} }
return (array) $request; return $request->getBody();
} }
/** /**
@ -234,7 +235,7 @@ final class messages extends method
public function __get(string $name): mixed public function __get(string $name): mixed
{ {
return match ($name) { return match ($name) {
'text' => $this->text ?? throw new Exception('Текст не задан'), 'text' => $this->text ?? throw new Exception('Текст не инициализирован'),
'attachment' => $this->attachment->attachments ?? $this->attachment = new attachments($this->robot), 'attachment' => $this->attachment->attachments ?? $this->attachment = new attachments($this->robot),
'attachments' => isset($this->attachment) ? $this->attachment->attachments : throw new Exception('Вложения не инициализированны'), 'attachments' => isset($this->attachment) ? $this->attachment->attachments : throw new Exception('Вложения не инициализированны'),
default => throw new Exception('Свойство не найдено: ' . $name) default => throw new Exception('Свойство не найдено: ' . $name)

View File

@ -40,11 +40,11 @@ final class apiTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -54,9 +54,9 @@ final class apiTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -76,7 +76,7 @@ final class apiTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();
@ -171,7 +171,7 @@ final class apiTest extends TestCase
public function testReadSettingsElement(): void public function testReadSettingsElement(): void
{ {
// Проверка выброса исключения // Проверка выброса исключения
$this->expectExceptionMessage('Не найдено: settings[\'element\']'); $this->expectExceptionMessage('Не инициализировано: settings[\'element\']');
// Чтение элемента настроек // Чтение элемента настроек
self::$robot->key(self::$group_key)->api['element']; self::$robot->key(self::$group_key)->api['element'];

View File

@ -46,11 +46,11 @@ final class attachmentsTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -60,9 +60,9 @@ final class attachmentsTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -82,7 +82,7 @@ final class attachmentsTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();

View File

@ -40,11 +40,11 @@ final class messagesTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -54,9 +54,9 @@ final class messagesTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -76,7 +76,7 @@ final class messagesTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();
@ -120,7 +120,7 @@ final class messagesTest extends TestCase
public function testReadText(): void public function testReadText(): void
{ {
// Проверка выброса исключения // Проверка выброса исключения
$this->expectExceptionMessage('Текст не задан'); $this->expectExceptionMessage('Текст не инициализирован');
// Чтение текста // Чтение текста
self::$robot->message()->text; self::$robot->message()->text;
@ -186,22 +186,24 @@ final class messagesTest extends TestCase
public function testSend(): void public function testSend(): void
{ {
// Отправка сообщения // Отправка сообщения
self::$robot->key(self::$group_key)->message()->send('123'); self::$robot->key(self::$group_key)->message('Тестовое сообщение')->send(self::$target_id);
} }
/** /**
* @testdox Отправка сообщеий (с вложениями) * @testdox Отправка сообщеий (с вложениями)
*/ */
public function testSendWithAttachments(): void // public function testSendWithAttachments(): void
{ // {
// Запись вложений // // Запись вложений
$message = self::$robot->key(self::$group_key)->message()->attachment('text'); // $message = self::$robot->key(self::$group_key)->message()->attachment('text');
// Отправка сообщения // // Отправка сообщения
$message->send('123'); // $message->send('Тестовое сообщение');
} // }
/** /**
* @t estdox Отправка сообщеий (с пересылаемым сообщением) * @t estdox Отправка сообщеий (с пересылаемым сообщением)
*
* что это?
*/ */
} }

View File

@ -40,11 +40,11 @@ final class photosTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -54,9 +54,9 @@ final class photosTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -76,7 +76,7 @@ final class photosTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();

View File

@ -4,9 +4,9 @@ declare(strict_types=1);
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use hood\vk\core, use hood\vk\core;
hood\vk\robots\robot, use hood\vk\robots\robot;
hood\vk\tests\settings; use hood\vk\tests\settings;
use hood\accounts\vk as account; use hood\accounts\vk as account;
@ -40,11 +40,11 @@ final class groupTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -54,9 +54,9 @@ final class groupTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -76,7 +76,7 @@ final class groupTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();
@ -133,7 +133,7 @@ final class groupTest extends TestCase
{ {
// Проверки // Проверки
$this->assertNotNull(self::$robot->id, 'Не удалось прочитать идентификатор'); $this->assertNotNull(self::$robot->id, 'Не удалось прочитать идентификатор');
$this->assertNotEmpty(self::$core->get(self::$robot->id), 'Робот не найден'); $this->assertNotEmpty(self::$core->get(self::$robot->id), 'Робот не инициализирован');
} }
/** /**
@ -155,7 +155,7 @@ final class groupTest extends TestCase
{ {
// Проверки // Проверки
$this->assertNotNull(self::$robot->session, 'Не удалось прочитать сессию'); $this->assertNotNull(self::$robot->session, 'Не удалось прочитать сессию');
$this->assertNotEmpty(self::$core->get(self::$robot->id, self::$robot->session), 'Сессия не найдена'); $this->assertNotEmpty(self::$core->get(self::$robot->id, self::$robot->session), 'Сессия не инициализирована');
} }
/** /**

View File

@ -4,9 +4,9 @@ declare(strict_types=1);
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use hood\vk\core, use hood\vk\core;
hood\vk\robots\robot, use hood\vk\robots\robot;
hood\vk\tests\settings; use hood\vk\tests\settings;
use hood\accounts\vk as account; use hood\accounts\vk as account;
@ -40,11 +40,11 @@ final class userTest extends TestCase
{ {
// Проверка входных данных // Проверка входных данных
if (empty(self::$project_id)) { if (empty(self::$project_id)) {
self::$markTestSkipped('Не найден идентификатор проекта'); self::markTestSkipped('Не инициализирован идентификатор проекта');
} }
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Запись режима SSL-протокола // Запись режима SSL-протокола
self::$account->ssl = self::$ssl ?? true; self::$account->ssl = self::$ssl ?? true;
@ -54,9 +54,9 @@ final class userTest extends TestCase
// Проверка входных данных // Проверка входных данных
if (empty(self::$login)) { if (empty(self::$login)) {
self::$markTestSkipped('Не найден входной аккаунта'); self::markTestSkipped('Не инициализирован входной аккаунта');
} else if (empty(self::$password)) { } else if (empty(self::$password)) {
self::$markTestSkipped('Не найден пароль аккаунта'); self::markTestSkipped('Не инициализирован пароль аккаунта');
} }
// Деаутентификация (на всякий случай) // Деаутентификация (на всякий случай)
@ -76,7 +76,7 @@ final class userTest extends TestCase
public static function testAccountDeinit(): void public static function testAccountDeinit(): void
{ {
// Инициализация аккаунта // Инициализация аккаунта
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts);
// Деаутентификация // Деаутентификация
self::$account->deauth(); self::$account->deauth();
@ -133,7 +133,7 @@ final class userTest extends TestCase
{ {
// Проверки // Проверки
$this->assertNotNull(self::$robot->id, 'Не удалось прочитать идентификатор'); $this->assertNotNull(self::$robot->id, 'Не удалось прочитать идентификатор');
$this->assertNotEmpty(self::$core->get(self::$robot->id), 'Робот не найден'); $this->assertNotEmpty(self::$core->get(self::$robot->id), 'Робот не инициализирован');
} }
/** /**
@ -155,7 +155,7 @@ final class userTest extends TestCase
{ {
// Проверки // Проверки
$this->assertNotNull(self::$robot->session, 'Не удалось прочитать сессию'); $this->assertNotNull(self::$robot->session, 'Не удалось прочитать сессию');
$this->assertNotEmpty(self::$core->get(self::$robot->id, self::$robot->session), 'Сессия не найдена'); $this->assertNotEmpty(self::$core->get(self::$robot->id, self::$robot->session), 'Сессия не инициализирована');
} }
/** /**