mirror of
https://git.yoomoney.ru/scm/sdk/yookassa-sdk-php.git
synced 2026-08-27 07:48:12 +00:00
cbcdbc8ae1
Отказ от поддержки PHP < 8 Изменена структура файлов Переработана логика работы с моделями Добавлено использование валидатора данных в моделях Массивы объектов заменены на объекты-коллекции
163 lines
4.2 KiB
PHP
163 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\YooKassa\Model\Payment\PaymentMethod;
|
|
|
|
use InvalidArgumentException;
|
|
use PHPUnit\Framework\TestCase;
|
|
use YooKassa\Helpers\Random;
|
|
use YooKassa\Model\Payment\PaymentMethod\AbstractPaymentMethod;
|
|
|
|
abstract class AbstractTestPaymentMethod extends TestCase
|
|
{
|
|
public function testGetType(): void
|
|
{
|
|
$instance = $this->getTestInstance();
|
|
self::assertEquals($this->getExpectedType(), $instance->getType());
|
|
}
|
|
|
|
/**
|
|
* @dataProvider invalidTypeDataProvider
|
|
*/
|
|
public function testInvalidType(mixed $value): void
|
|
{
|
|
$this->expectException(InvalidArgumentException::class);
|
|
new TestPaymentData($value);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider validSavedDataProvider
|
|
*/
|
|
public function testGetSetSaved(mixed $value): void
|
|
{
|
|
$instance = $this->getTestInstance();
|
|
|
|
self::assertFalse($instance->getSaved());
|
|
self::assertFalse($instance->saved);
|
|
|
|
$instance->setSaved($value);
|
|
if ($value) {
|
|
self::assertTrue($instance->getSaved());
|
|
self::assertTrue($instance->saved);
|
|
} else {
|
|
self::assertFalse($instance->getSaved());
|
|
self::assertFalse($instance->saved);
|
|
}
|
|
|
|
$instance = $this->getTestInstance();
|
|
$instance->saved = $value;
|
|
if ($value) {
|
|
self::assertTrue($instance->getSaved());
|
|
self::assertTrue($instance->saved);
|
|
} else {
|
|
self::assertFalse($instance->getSaved());
|
|
self::assertFalse($instance->saved);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @dataProvider validIdDataProvider
|
|
*/
|
|
public function testGetSetId(mixed $value): void
|
|
{
|
|
$instance = $this->getTestInstance();
|
|
|
|
$instance->setId($value);
|
|
if (empty($value)) {
|
|
self::assertNull($instance->getId());
|
|
self::assertNull($instance->id);
|
|
} else {
|
|
self::assertEquals($value, $instance->getId());
|
|
self::assertEquals($value, $instance->id);
|
|
}
|
|
|
|
$instance = $this->getTestInstance();
|
|
$instance->id = $value;
|
|
if (empty($value)) {
|
|
self::assertNull($instance->getId());
|
|
self::assertNull($instance->id);
|
|
} else {
|
|
self::assertEquals($value, $instance->getId());
|
|
self::assertEquals($value, $instance->id);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @dataProvider validTitleDataProvider
|
|
*/
|
|
public function testGetSetTitle(mixed $value): void
|
|
{
|
|
$instance = $this->getTestInstance();
|
|
|
|
$instance->setTitle($value);
|
|
if (empty($value)) {
|
|
self::assertNull($instance->getTitle());
|
|
self::assertNull($instance->title);
|
|
} else {
|
|
self::assertEquals($value, $instance->getTitle());
|
|
self::assertEquals($value, $instance->title);
|
|
}
|
|
|
|
$instance = $this->getTestInstance();
|
|
$instance->title = $value;
|
|
if (empty($value)) {
|
|
self::assertNull($instance->getTitle());
|
|
self::assertNull($instance->title);
|
|
} else {
|
|
self::assertEquals($value, $instance->getTitle());
|
|
self::assertEquals($value, $instance->title);
|
|
}
|
|
}
|
|
|
|
public static function invalidTypeDataProvider()
|
|
{
|
|
return [
|
|
[''],
|
|
[null],
|
|
[Random::str(40)],
|
|
[0],
|
|
];
|
|
}
|
|
|
|
public static function validSavedDataProvider()
|
|
{
|
|
return [
|
|
[true],
|
|
[false],
|
|
];
|
|
}
|
|
|
|
public static function validIdDataProvider()
|
|
{
|
|
return [
|
|
[null],
|
|
[Random::str(2)],
|
|
[Random::str(10)],
|
|
[Random::str(100)],
|
|
];
|
|
}
|
|
|
|
public static function validTitleDataProvider()
|
|
{
|
|
return [
|
|
[null],
|
|
[Random::str(2, 2, '123456789ABCDEF')],
|
|
[Random::str(2)],
|
|
[Random::str(10)],
|
|
[Random::str(100)],
|
|
];
|
|
}
|
|
|
|
abstract protected function getTestInstance(): AbstractPaymentMethod;
|
|
|
|
abstract protected function getExpectedType(): string;
|
|
}
|
|
|
|
class TestPaymentData extends AbstractPaymentMethod
|
|
{
|
|
public function __construct($type)
|
|
{
|
|
parent::__construct([]);
|
|
$this->setType($type);
|
|
}
|
|
}
|