mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-11-22 09:14:34 +00:00
Доработки коллекций, чека и тестов
- `EntityCollection` сильно упрощён, добавлен выброс исключений при пустом содержимом - `Receipt::setItems(), setPayments() и setVats()` получили одинаковые проверки входящих данных - округление в `Vat::setSum()` - доработаны тесты коллекций
This commit is contained in:
parent
16d1146826
commit
058ce5ed3d
@ -12,7 +12,6 @@ declare(strict_types = 1);
|
|||||||
namespace AtolOnline\Collections;
|
namespace AtolOnline\Collections;
|
||||||
|
|
||||||
use AtolOnline\Exceptions\InvalidEntityInCollectionException;
|
use AtolOnline\Exceptions\InvalidEntityInCollectionException;
|
||||||
use Exception;
|
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,60 +20,12 @@ use Illuminate\Support\Collection;
|
|||||||
abstract class EntityCollection extends Collection
|
abstract class EntityCollection extends Collection
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @return array
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function __construct($items = [])
|
|
||||||
{
|
|
||||||
$this->checkCount($items);
|
|
||||||
//TODO следует переделать EntityCollection в обёртку над Collection,
|
|
||||||
// ибо ломает методы Collection, которые return new static
|
|
||||||
$this->checkItemsClasses($items);
|
|
||||||
parent::__construct($items);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function prepend($value, $key = null): self
|
|
||||||
{
|
|
||||||
$this->checkCount();
|
|
||||||
return parent::prepend($value, $key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function add($item): self
|
|
||||||
{
|
|
||||||
$this->checkCount();
|
|
||||||
return parent::add($item);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function push(...$values): self
|
|
||||||
{
|
|
||||||
$this->checkCount();
|
|
||||||
return parent::push(...$values);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function merge($items): self
|
|
||||||
{
|
|
||||||
$this->checkCount();
|
|
||||||
return parent::merge($items);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function jsonSerialize(): array
|
public function jsonSerialize(): array
|
||||||
{
|
{
|
||||||
|
$this->checkCount();
|
||||||
$this->checkItemsClasses();
|
$this->checkItemsClasses();
|
||||||
return parent::jsonSerialize();
|
return parent::jsonSerialize();
|
||||||
}
|
}
|
||||||
@ -82,20 +33,19 @@ abstract class EntityCollection extends Collection
|
|||||||
/**
|
/**
|
||||||
* Проверяет количество элементов коллекции
|
* Проверяет количество элементов коллекции
|
||||||
*
|
*
|
||||||
* @param array $items Массив элементов, если пустой - проверит содержимое коллекции
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function checkCount(array $items = []): void
|
public function checkCount(): void
|
||||||
{
|
{
|
||||||
//TODO проверять пустоту?
|
$this->isEmpty() && throw new (static::EMPTY_EXCEPTION_CLASS)();
|
||||||
if (count($items) > static::MAX_COUNT || $this->count() === static::MAX_COUNT) {
|
$this->count() > static::MAX_COUNT && throw new (static::TOO_MANY_EXCEPTION_CLASS)(static::MAX_COUNT);
|
||||||
throw new (static::EXCEPTION_CLASS)(static::MAX_COUNT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверяет корректность класса элемента коллекции
|
* Проверяет корректность класса элемента коллекции
|
||||||
*
|
*
|
||||||
|
* @param mixed $item
|
||||||
|
* @return void
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function checkItemClass(mixed $item): void
|
public function checkItemClass(mixed $item): void
|
||||||
@ -108,10 +58,11 @@ abstract class EntityCollection extends Collection
|
|||||||
/**
|
/**
|
||||||
* Проверяет корректность классов элементов коллекции
|
* Проверяет корректность классов элементов коллекции
|
||||||
*
|
*
|
||||||
|
* @return $this
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function checkItemsClasses(array $items = []): void
|
public function checkItemsClasses(): self
|
||||||
{
|
{
|
||||||
(empty($items) ? $this : collect($items))->each(fn ($item) => $this->checkItemClass($item));
|
return $this->each(fn($item) => $this->checkItemClass($item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ namespace AtolOnline\Collections;
|
|||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constants\Constraints;
|
||||||
use AtolOnline\Entities\Item;
|
use AtolOnline\Entities\Item;
|
||||||
|
use AtolOnline\Exceptions\EmptyItemsException;
|
||||||
use AtolOnline\Exceptions\TooManyItemsException;
|
use AtolOnline\Exceptions\TooManyItemsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,8 +29,13 @@ final class Items extends EntityCollection
|
|||||||
*/
|
*/
|
||||||
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_ITEMS;
|
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_ITEMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Класс исключения для выброса при пустой коллекции
|
||||||
|
*/
|
||||||
|
protected const EMPTY_EXCEPTION_CLASS = EmptyItemsException::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс-наследник TooManyException для выброса при превышении количества
|
* Класс-наследник TooManyException для выброса при превышении количества
|
||||||
*/
|
*/
|
||||||
protected const EXCEPTION_CLASS = TooManyItemsException::class;
|
protected const TOO_MANY_EXCEPTION_CLASS = TooManyItemsException::class;
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ namespace AtolOnline\Collections;
|
|||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constants\Constraints;
|
||||||
use AtolOnline\Entities\Payment;
|
use AtolOnline\Entities\Payment;
|
||||||
|
use AtolOnline\Exceptions\EmptyPaymentsException;
|
||||||
use AtolOnline\Exceptions\TooManyPaymentsException;
|
use AtolOnline\Exceptions\TooManyPaymentsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,8 +29,13 @@ final class Payments extends EntityCollection
|
|||||||
*/
|
*/
|
||||||
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_PAYMENTS;
|
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_PAYMENTS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Класс исключения для выброса при пустой коллекции
|
||||||
|
*/
|
||||||
|
protected const EMPTY_EXCEPTION_CLASS = EmptyPaymentsException::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс-наследник TooManyException для выброса при превышении количества
|
* Класс-наследник TooManyException для выброса при превышении количества
|
||||||
*/
|
*/
|
||||||
protected const EXCEPTION_CLASS = TooManyPaymentsException::class;
|
protected const TOO_MANY_EXCEPTION_CLASS = TooManyPaymentsException::class;
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ namespace AtolOnline\Collections;
|
|||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constants\Constraints;
|
||||||
use AtolOnline\Entities\Vat;
|
use AtolOnline\Entities\Vat;
|
||||||
|
use AtolOnline\Exceptions\EmptyVatsException;
|
||||||
use AtolOnline\Exceptions\TooManyVatsException;
|
use AtolOnline\Exceptions\TooManyVatsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,8 +29,13 @@ final class Vats extends EntityCollection
|
|||||||
*/
|
*/
|
||||||
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_VATS;
|
protected const MAX_COUNT = Constraints::MAX_COUNT_DOC_VATS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Класс исключения для выброса при пустой коллекции
|
||||||
|
*/
|
||||||
|
protected const EMPTY_EXCEPTION_CLASS = EmptyVatsException::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс-наследник TooManyException для выброса при превышении количества
|
* Класс-наследник TooManyException для выброса при превышении количества
|
||||||
*/
|
*/
|
||||||
protected const EXCEPTION_CLASS = TooManyVatsException::class;
|
protected const TOO_MANY_EXCEPTION_CLASS = TooManyVatsException::class;
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,6 @@ use AtolOnline\Collections\Payments;
|
|||||||
use AtolOnline\Collections\Vats;
|
use AtolOnline\Collections\Vats;
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constants\Constraints;
|
||||||
use AtolOnline\Exceptions\EmptyItemsException;
|
use AtolOnline\Exceptions\EmptyItemsException;
|
||||||
use AtolOnline\Exceptions\EmptyPaymentsException;
|
|
||||||
use AtolOnline\Exceptions\EmptyVatsException;
|
|
||||||
use AtolOnline\Exceptions\InvalidEntityInCollectionException;
|
use AtolOnline\Exceptions\InvalidEntityInCollectionException;
|
||||||
use AtolOnline\Exceptions\TooLongAddCheckPropException;
|
use AtolOnline\Exceptions\TooLongAddCheckPropException;
|
||||||
use AtolOnline\Exceptions\TooLongCashierException;
|
use AtolOnline\Exceptions\TooLongCashierException;
|
||||||
@ -93,7 +91,6 @@ class Receipt extends Entity
|
|||||||
* @param Items $items
|
* @param Items $items
|
||||||
* @param Payments $payments
|
* @param Payments $payments
|
||||||
* @throws EmptyItemsException
|
* @throws EmptyItemsException
|
||||||
* @throws EmptyPaymentsException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function __construct(Client $client, Company $company, Items $items, Payments $payments)
|
public function __construct(Client $client, Company $company, Items $items, Payments $payments)
|
||||||
@ -211,12 +208,10 @@ class Receipt extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setItems(Items $items): self
|
public function setItems(Items $items): self
|
||||||
{
|
{
|
||||||
if ($items->isEmpty()) {
|
$items->checkCount();
|
||||||
throw new EmptyItemsException();
|
|
||||||
}
|
|
||||||
$items->checkItemsClasses();
|
$items->checkItemsClasses();
|
||||||
$this->items = $items;
|
$this->items = $items;
|
||||||
$this->getItems()->each(fn ($item) => $this->total += $item->getSum());
|
$this->getItems()->each(fn($item) => $this->total += $item->getSum());
|
||||||
$this->total = round($this->total, 2);
|
$this->total = round($this->total, 2);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -236,13 +231,12 @@ class Receipt extends Entity
|
|||||||
*
|
*
|
||||||
* @param Payments $payments
|
* @param Payments $payments
|
||||||
* @return Receipt
|
* @return Receipt
|
||||||
* @throws EmptyPaymentsException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function setPayments(Payments $payments): self
|
public function setPayments(Payments $payments): self
|
||||||
{
|
{
|
||||||
if ($payments->isEmpty()) {
|
$payments->checkCount();
|
||||||
throw new EmptyPaymentsException();
|
$payments->checkItemsClasses();
|
||||||
}
|
|
||||||
$this->payments = $payments;
|
$this->payments = $payments;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -262,17 +256,15 @@ class Receipt extends Entity
|
|||||||
*
|
*
|
||||||
* @param Vats|null $vats
|
* @param Vats|null $vats
|
||||||
* @return Receipt
|
* @return Receipt
|
||||||
* @throws EmptyVatsException
|
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function setVats(?Vats $vats): self
|
public function setVats(?Vats $vats): self
|
||||||
{
|
{
|
||||||
if ($vats->isEmpty()) {
|
$vats->checkCount();
|
||||||
throw new EmptyVatsException();
|
$vats->checkItemsClasses();
|
||||||
}
|
|
||||||
$this->vats = $vats;
|
$this->vats = $vats;
|
||||||
/** @var Vat $vat */
|
/** @var Vat $vat */
|
||||||
$this->getVats()->each(fn ($vat) => $vat->setSum($this->getTotal()));
|
$this->getVats()->each(fn($vat) => $vat->setSum($this->getTotal()));
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,13 +368,13 @@ class Receipt extends Entity
|
|||||||
$json = [
|
$json = [
|
||||||
'client' => $this->getClient(),
|
'client' => $this->getClient(),
|
||||||
'company' => $this->getCompany(),
|
'company' => $this->getCompany(),
|
||||||
'items' => $this->getItems(),
|
'items' => $this->getItems()->jsonSerialize(),
|
||||||
'total' => $this->getTotal(),
|
'total' => $this->getTotal(),
|
||||||
'payments' => $this->getPayments(),
|
'payments' => $this->getPayments()->jsonSerialize(),
|
||||||
];
|
];
|
||||||
$this->getAgentInfo()?->jsonSerialize() && $json['agent_info'] = $this->getAgentInfo();
|
$this->getAgentInfo()?->jsonSerialize() && $json['agent_info'] = $this->getAgentInfo();
|
||||||
$this->getSupplier()?->jsonSerialize() && $json['supplier_info'] = $this->getSupplier();
|
$this->getSupplier()?->jsonSerialize() && $json['supplier_info'] = $this->getSupplier();
|
||||||
$this->getVats()?->jsonSerialize() && $json['vats'] = $this->getVats();
|
$this->getVats()?->isNotEmpty() && $json['vats'] = $this->getVats();
|
||||||
!is_null($this->getAddCheckProps()) && $json['additional_check_props'] = $this->getAddCheckProps();
|
!is_null($this->getAddCheckProps()) && $json['additional_check_props'] = $this->getAddCheckProps();
|
||||||
!is_null($this->getCashier()) && $json['cashier'] = $this->getCashier();
|
!is_null($this->getCashier()) && $json['cashier'] = $this->getCashier();
|
||||||
$this->getAddUserProps()?->jsonSerialize() && $json['additional_user_props'] = $this->getAddUserProps();
|
$this->getAddUserProps()?->jsonSerialize() && $json['additional_user_props'] = $this->getAddUserProps();
|
||||||
|
@ -91,7 +91,7 @@ final class Vat extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setSum(float $rubles): self
|
public function setSum(float $rubles): self
|
||||||
{
|
{
|
||||||
$this->sum = $rubles;
|
$this->sum = round($rubles, 2);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ use AtolOnline\{
|
|||||||
Tests\BasicTestCase};
|
Tests\BasicTestCase};
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
EmptyItemNameException,
|
EmptyItemNameException,
|
||||||
|
EmptyItemsException,
|
||||||
InvalidEntityInCollectionException,
|
InvalidEntityInCollectionException,
|
||||||
NegativeItemPriceException,
|
NegativeItemPriceException,
|
||||||
NegativeItemQuantityException,
|
NegativeItemQuantityException,
|
||||||
@ -29,10 +30,12 @@ use AtolOnline\Exceptions\{
|
|||||||
class ItemsTest extends BasicTestCase
|
class ItemsTest extends BasicTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при установке слишком большого количества оплат через конструктор
|
* Тестирует выброс исключения при установке слишком большого количества предметов расчёта
|
||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
||||||
* @throws EmptyItemNameException
|
* @throws EmptyItemNameException
|
||||||
* @throws NegativeItemPriceException
|
* @throws NegativeItemPriceException
|
||||||
@ -42,96 +45,25 @@ class ItemsTest extends BasicTestCase
|
|||||||
* @throws TooManyException
|
* @throws TooManyException
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function testTooManyItemsExceptionByConstructor()
|
public function testTooManyItemsException()
|
||||||
{
|
{
|
||||||
$this->expectException(TooManyItemsException::class);
|
$this->expectException(TooManyItemsException::class);
|
||||||
new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS + 1));
|
(new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS + 1)))->jsonSerialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
* Тестирует выброс исключения при установке нулевого количества предметов расчёта
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::prepend
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
|
||||||
* @throws EmptyItemNameException
|
|
||||||
* @throws NegativeItemPriceException
|
|
||||||
* @throws NegativeItemQuantityException
|
|
||||||
* @throws TooHighItemPriceException
|
|
||||||
* @throws TooLongItemNameException
|
|
||||||
* @throws TooManyException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyItemsExceptionByPrepend()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyItemsException::class);
|
|
||||||
(new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS)))
|
|
||||||
->prepend($this->generateItemObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в конец коллекции
|
|
||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::add
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
* @throws EmptyItemNameException
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @throws NegativeItemPriceException
|
* @covers \AtolOnline\Exceptions\EmptyItemsException
|
||||||
* @throws NegativeItemQuantityException
|
|
||||||
* @throws TooHighItemPriceException
|
|
||||||
* @throws TooLongItemNameException
|
|
||||||
* @throws TooManyException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function testTooManyItemsExceptionByAdd()
|
public function testEmptyItemsException()
|
||||||
{
|
{
|
||||||
$this->expectException(TooManyItemsException::class);
|
$this->expectException(EmptyItemsException::class);
|
||||||
(new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS)))
|
(new Items([]))->jsonSerialize();
|
||||||
->add($this->generateItemObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишних оплат в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::push
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
|
||||||
* @throws EmptyItemNameException
|
|
||||||
* @throws NegativeItemPriceException
|
|
||||||
* @throws NegativeItemQuantityException
|
|
||||||
* @throws TooHighItemPriceException
|
|
||||||
* @throws TooLongItemNameException
|
|
||||||
* @throws TooManyException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyItemsExceptionByPush()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyItemsException::class);
|
|
||||||
(new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS)))
|
|
||||||
->push(...$this->generateItemObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::merge
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyItemsException
|
|
||||||
* @throws EmptyItemNameException
|
|
||||||
* @throws NegativeItemPriceException
|
|
||||||
* @throws NegativeItemQuantityException
|
|
||||||
* @throws TooHighItemPriceException
|
|
||||||
* @throws TooLongItemNameException
|
|
||||||
* @throws TooManyException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyItemsExceptionByMerge()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyItemsException::class);
|
|
||||||
(new Items($this->generateItemObjects(Constraints::MAX_COUNT_DOC_ITEMS)))
|
|
||||||
->merge($this->generateItemObjects(2));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ namespace AtolOnline\Tests\Collections;
|
|||||||
use AtolOnline\{
|
use AtolOnline\{
|
||||||
Collections\Payments,
|
Collections\Payments,
|
||||||
Constants\Constraints,
|
Constants\Constraints,
|
||||||
|
Exceptions\EmptyPaymentsException,
|
||||||
Exceptions\InvalidEntityInCollectionException,
|
Exceptions\InvalidEntityInCollectionException,
|
||||||
Exceptions\InvalidEnumValueException,
|
Exceptions\InvalidEnumValueException,
|
||||||
Exceptions\NegativePaymentSumException,
|
Exceptions\NegativePaymentSumException,
|
||||||
@ -25,7 +26,7 @@ use AtolOnline\{
|
|||||||
class PaymentsTest extends BasicTestCase
|
class PaymentsTest extends BasicTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при установке слишком большого количества оплат через конструктор
|
* Тестирует выброс исключения при установке слишком большого количества оплат
|
||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
@ -38,81 +39,21 @@ class PaymentsTest extends BasicTestCase
|
|||||||
public function testTooManyPaymentsExceptionByConstructor()
|
public function testTooManyPaymentsExceptionByConstructor()
|
||||||
{
|
{
|
||||||
$this->expectException(TooManyPaymentsException::class);
|
$this->expectException(TooManyPaymentsException::class);
|
||||||
new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS + 1));
|
(new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS + 1)))->jsonSerialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
* Тестирует выброс исключения при установке нулевого количества оплат
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::prepend
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyPaymentsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws NegativePaymentSumException
|
|
||||||
* @throws TooHighPaymentSumException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyPaymentsExceptionByPrepend()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyPaymentsException::class);
|
|
||||||
(new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS)))
|
|
||||||
->prepend($this->generatePaymentObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в конец коллекции
|
|
||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::add
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
* @covers \AtolOnline\Exceptions\TooManyPaymentsException
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @throws InvalidEnumValueException
|
* @covers \AtolOnline\Exceptions\EmptyPaymentsException
|
||||||
* @throws NegativePaymentSumException
|
|
||||||
* @throws TooHighPaymentSumException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function testTooManyPaymentsExceptionByAdd()
|
public function testEmptyPaymentsException()
|
||||||
{
|
{
|
||||||
$this->expectException(TooManyPaymentsException::class);
|
$this->expectException(EmptyPaymentsException::class);
|
||||||
(new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS)))
|
(new Payments([]))->jsonSerialize();
|
||||||
->add($this->generatePaymentObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишних оплат в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::push
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyPaymentsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws NegativePaymentSumException
|
|
||||||
* @throws TooHighPaymentSumException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyPaymentsExceptionByPush()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyPaymentsException::class);
|
|
||||||
(new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS + 1)))
|
|
||||||
->push(...$this->generatePaymentObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::merge
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyPaymentsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws NegativePaymentSumException
|
|
||||||
* @throws TooHighPaymentSumException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyPaymentsExceptionByMerge()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyPaymentsException::class);
|
|
||||||
(new Payments($this->generatePaymentObjects(Constraints::MAX_COUNT_DOC_PAYMENTS - 1)))
|
|
||||||
->merge($this->generatePaymentObjects(2));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ use AtolOnline\{
|
|||||||
Constants\Constraints,
|
Constants\Constraints,
|
||||||
Entities\Payment,
|
Entities\Payment,
|
||||||
Enums\PaymentTypes,
|
Enums\PaymentTypes,
|
||||||
|
Exceptions\EmptyVatsException,
|
||||||
Exceptions\InvalidEntityInCollectionException,
|
Exceptions\InvalidEntityInCollectionException,
|
||||||
Exceptions\InvalidEnumValueException,
|
Exceptions\InvalidEnumValueException,
|
||||||
Exceptions\NegativePaymentSumException,
|
Exceptions\NegativePaymentSumException,
|
||||||
@ -32,6 +33,8 @@ class VatsTest extends BasicTestCase
|
|||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@ -44,150 +47,36 @@ class VatsTest extends BasicTestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при установке слишком большого количества ставок через конструктор
|
* Тестирует выброс исключения при установке нулевого количества ставок
|
||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
|
* @covers \AtolOnline\Exceptions\EmptyVatsException
|
||||||
|
* @throws InvalidEntityInCollectionException
|
||||||
|
*/
|
||||||
|
public function testEmptyVatsException()
|
||||||
|
{
|
||||||
|
$this->expectException(EmptyVatsException::class);
|
||||||
|
(new Vats([]))->jsonSerialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Тестирует выброс исключения при установке слишком большого количества ставок
|
||||||
|
*
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function testTooManyVatsExceptionByConstructor()
|
public function testTooManyVatsException()
|
||||||
{
|
{
|
||||||
$this->expectException(TooManyVatsException::class);
|
$this->expectException(TooManyVatsException::class);
|
||||||
new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS + 1));
|
(new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS + 1)))->jsonSerialize();
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует добавление ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::prepend
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testPrepend()
|
|
||||||
{
|
|
||||||
$vats = (new Vats($this->generateVatObjects(3)))
|
|
||||||
->prepend($this->generateVatObjects());
|
|
||||||
$this->assertEquals(4, $vats->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::prepend
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyVatsExceptionByPrepend()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyVatsException::class);
|
|
||||||
(new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS)))
|
|
||||||
->prepend($this->generateVatObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует добавление ставки в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::add
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testAdd()
|
|
||||||
{
|
|
||||||
$vats = (new Vats($this->generateVatObjects(3)))
|
|
||||||
->add($this->generateVatObjects());
|
|
||||||
$this->assertEquals(4, $vats->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::add
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyVatsExceptionByAdd()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyVatsException::class);
|
|
||||||
(new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS)))
|
|
||||||
->add($this->generateVatObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует добавление лишних ставок в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::push
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testPush()
|
|
||||||
{
|
|
||||||
$vats = (new Vats($this->generateVatObjects(3)))
|
|
||||||
->push(...$this->generateVatObjects(3));
|
|
||||||
$this->assertEquals(6, $vats->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишних ставок в конец коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::push
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyVatsExceptionByPush()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyVatsException::class);
|
|
||||||
(new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS)))
|
|
||||||
->push(...$this->generateVatObjects());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует добавление ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::merge
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testMerge()
|
|
||||||
{
|
|
||||||
$vats = (new Vats($this->generateVatObjects(3)))
|
|
||||||
->merge($this->generateVatObjects(3));
|
|
||||||
$this->assertEquals(6, $vats->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Тестирует выброс исключения при добавлении лишней ставки в начало коллекции
|
|
||||||
*
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::merge
|
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkCount
|
|
||||||
* @covers \AtolOnline\Exceptions\TooManyVatsException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
|
||||||
*/
|
|
||||||
public function testTooManyVatsExceptionByMerge()
|
|
||||||
{
|
|
||||||
$this->expectException(TooManyVatsException::class);
|
|
||||||
(new Vats($this->generateVatObjects(Constraints::MAX_COUNT_DOC_VATS - 1)))
|
|
||||||
->merge($this->generateVatObjects(2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -195,6 +84,7 @@ class VatsTest extends BasicTestCase
|
|||||||
*
|
*
|
||||||
* @covers \AtolOnline\Collections\EntityCollection
|
* @covers \AtolOnline\Collections\EntityCollection
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::checkItemClass
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemClass
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @covers \AtolOnline\Exceptions\InvalidEntityInCollectionException
|
* @covers \AtolOnline\Exceptions\InvalidEntityInCollectionException
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
@ -212,6 +102,9 @@ class VatsTest extends BasicTestCase
|
|||||||
/**
|
/**
|
||||||
* Тестирует выброс исключения при наличии объектов не тех классов в коллекции
|
* Тестирует выброс исключения при наличии объектов не тех классов в коллекции
|
||||||
*
|
*
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemClass
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::checkItemsClasses
|
||||||
|
* @covers \AtolOnline\Collections\EntityCollection::jsonSerialize
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
* @throws NegativePaymentSumException
|
* @throws NegativePaymentSumException
|
||||||
* @throws TooHighPaymentSumException
|
* @throws TooHighPaymentSumException
|
||||||
|
@ -268,7 +268,7 @@ class ReceiptTest extends BasicTestCase
|
|||||||
{
|
{
|
||||||
$this->expectException(InvalidEntityInCollectionException::class);
|
$this->expectException(InvalidEntityInCollectionException::class);
|
||||||
$this->expectErrorMessage('Коллекция AtolOnline\Collections\Payments должна содержать объекты AtolOnline\Entities\Payment');
|
$this->expectErrorMessage('Коллекция AtolOnline\Collections\Payments должна содержать объекты AtolOnline\Entities\Payment');
|
||||||
new Receipt(
|
(string)new Receipt(
|
||||||
new Client('John Doe', 'john@example.com', '+1/22/99*73s dsdas654 5s6', '+fasd3\qe3fs_=nac99013928czc'),
|
new Client('John Doe', 'john@example.com', '+1/22/99*73s dsdas654 5s6', '+fasd3\qe3fs_=nac99013928czc'),
|
||||||
new Company('company@example.com', SnoTypes::OSN, '1234567890', 'https://example.com'),
|
new Company('company@example.com', SnoTypes::OSN, '1234567890', 'https://example.com'),
|
||||||
new Items([new Item('test item', 2, 3)]),
|
new Items([new Item('test item', 2, 3)]),
|
||||||
@ -287,7 +287,6 @@ class ReceiptTest extends BasicTestCase
|
|||||||
* @throws EmptyItemNameException
|
* @throws EmptyItemNameException
|
||||||
* @throws EmptyItemsException
|
* @throws EmptyItemsException
|
||||||
* @throws EmptyPaymentsException
|
* @throws EmptyPaymentsException
|
||||||
* @throws EmptyVatsException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
* @throws NegativeItemPriceException
|
* @throws NegativeItemPriceException
|
||||||
@ -297,6 +296,7 @@ class ReceiptTest extends BasicTestCase
|
|||||||
* @throws TooHighPaymentSumException
|
* @throws TooHighPaymentSumException
|
||||||
* @throws TooLongItemNameException
|
* @throws TooLongItemNameException
|
||||||
* @throws TooManyException
|
* @throws TooManyException
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function testEmptyVatsException(): void
|
public function testEmptyVatsException(): void
|
||||||
{
|
{
|
||||||
@ -316,7 +316,6 @@ class ReceiptTest extends BasicTestCase
|
|||||||
* @throws EmptyItemNameException
|
* @throws EmptyItemNameException
|
||||||
* @throws EmptyItemsException
|
* @throws EmptyItemsException
|
||||||
* @throws EmptyPaymentsException
|
* @throws EmptyPaymentsException
|
||||||
* @throws EmptyVatsException
|
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
* @throws InvalidEnumValueException
|
* @throws InvalidEnumValueException
|
||||||
* @throws NegativeItemPriceException
|
* @throws NegativeItemPriceException
|
||||||
@ -326,12 +325,13 @@ class ReceiptTest extends BasicTestCase
|
|||||||
* @throws TooHighPaymentSumException
|
* @throws TooHighPaymentSumException
|
||||||
* @throws TooLongItemNameException
|
* @throws TooLongItemNameException
|
||||||
* @throws TooManyException
|
* @throws TooManyException
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function testInvalidVatInCollectionException(): void
|
public function testInvalidVatInCollectionException(): void
|
||||||
{
|
{
|
||||||
$this->expectException(InvalidEntityInCollectionException::class);
|
$this->expectException(InvalidEntityInCollectionException::class);
|
||||||
$this->expectErrorMessage('Коллекция AtolOnline\Collections\Vats должна содержать объекты AtolOnline\Entities\Vat');
|
$this->expectErrorMessage('Коллекция AtolOnline\Collections\Vats должна содержать объекты AtolOnline\Entities\Vat');
|
||||||
$this->newReceipt()->setVats(new Vats(['qwerty']));
|
(string)$this->newReceipt()->setVats(new Vats(['qwerty']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user