Переработан Vat, покрыт тестами
This commit is contained in:
@@ -32,7 +32,7 @@ class ClientTest extends BasicTestCase
|
||||
*/
|
||||
public function testConstructorWithoutArgs(): void
|
||||
{
|
||||
$this->assertEquals('[]', (string)(new Client()));
|
||||
$this->assertAtolable(new Client(), []);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
101
tests/AtolOnline/Tests/Entities/VatTest.php
Normal file
101
tests/AtolOnline/Tests/Entities/VatTest.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
namespace AtolOnline\Tests\Entities;
|
||||
|
||||
use AtolOnline\{
|
||||
Entities\Vat,
|
||||
Enums\VatTypes,
|
||||
Tests\BasicTestCase
|
||||
};
|
||||
|
||||
/**
|
||||
* Набор тестов для проверки работы класса ставки НДС
|
||||
*/
|
||||
class VatTest extends BasicTestCase
|
||||
{
|
||||
/**
|
||||
* Провайдер данных для тестирования разных типов ставок НДС
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerVatsSet(): array
|
||||
{
|
||||
return [
|
||||
[VatTypes::NONE, 0],
|
||||
[VatTypes::VAT0, 0],
|
||||
[VatTypes::VAT10, 10],
|
||||
[VatTypes::VAT18, 18],
|
||||
[VatTypes::VAT20, 20],
|
||||
[VatTypes::VAT110, 9.09],
|
||||
[VatTypes::VAT118, 15.25],
|
||||
[VatTypes::VAT120, 16.67],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Провайдер данных для тестирования разных типов ставок НДС
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerVatsAdd(): array
|
||||
{
|
||||
return [
|
||||
[VatTypes::VAT10, 12, 10],
|
||||
[VatTypes::VAT18, 21.6, 18],
|
||||
[VatTypes::VAT20, 24, 20],
|
||||
[VatTypes::VAT110, 10.91, 9.09],
|
||||
[VatTypes::VAT118, 18.31, 15.25],
|
||||
[VatTypes::VAT120, 20, 16.67],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Тестирует конструктор без передачи значений и приведение к json
|
||||
*
|
||||
* @param string $type Тип НДС
|
||||
* @param float $sum Исходная сумма
|
||||
* @dataProvider providerVatsSet
|
||||
* @covers \AtolOnline\Entities\Vat
|
||||
* @covers \AtolOnline\Entities\Vat::setType
|
||||
* @covers \AtolOnline\Entities\Vat::getType
|
||||
* @covers \AtolOnline\Entities\Vat::setSum
|
||||
* @covers \AtolOnline\Entities\Vat::getSum
|
||||
* @covers \AtolOnline\Entities\Vat::getCalculated
|
||||
* @covers \AtolOnline\Entities\Vat::jsonSerialize
|
||||
*/
|
||||
public function testConstructor(string $type, float $sum): void
|
||||
{
|
||||
$vat = new Vat($type, $sum);
|
||||
$this->assertAtolable($vat, [
|
||||
'type' => $vat->getType(),
|
||||
'sum' => $vat->getCalculated(),
|
||||
]);
|
||||
$this->assertEquals($type, $vat->getType());
|
||||
$this->assertEquals($sum, $vat->getSum());
|
||||
}
|
||||
|
||||
/**
|
||||
* Тестирует расчёт суммы НДС от исходной суммы 100+20р и 100-20р
|
||||
*
|
||||
* @dataProvider providerVatsAdd
|
||||
* @param string $type Тип НДС
|
||||
* @param float $after_plus Результат после +20р
|
||||
* @param float $after_minus Результат после -20р
|
||||
* @covers \AtolOnline\Entities\Vat::addSum
|
||||
* @covers \AtolOnline\Entities\Vat::getCalculated
|
||||
*/
|
||||
public function testVatAdd(string $type, float $after_plus, float $after_minus)
|
||||
{
|
||||
$vat = (new Vat($type, 100))->addSum(20); // 120р
|
||||
$this->assertEquals($after_plus, $vat->getCalculated());
|
||||
$vat->addSum(-20); // 100р
|
||||
$this->assertEquals($after_minus, $vat->getCalculated());
|
||||
}
|
||||
}
|
||||
@@ -84,11 +84,11 @@ class HelpersTest extends BasicTestCase
|
||||
* Тестирует перевод копеек в рубли
|
||||
*
|
||||
* @dataProvider providerKopeksToRubles
|
||||
* @covers \AtolOnline\Helpers::KopToRub
|
||||
* @covers \AtolOnline\Helpers::toRub
|
||||
*/
|
||||
public function testKopeksToRubles(?int $kopeks, float $rubles): void
|
||||
{
|
||||
$result = Helpers::KopToRub($kopeks);
|
||||
$result = Helpers::toRub($kopeks);
|
||||
$this->assertIsFloat($result);
|
||||
$this->assertEquals($result, $rubles);
|
||||
}
|
||||
@@ -97,11 +97,11 @@ class HelpersTest extends BasicTestCase
|
||||
* Тестирует перевод копеек в рубли
|
||||
*
|
||||
* @dataProvider providerRublesToKopeks
|
||||
* @covers \AtolOnline\Helpers::RubToKop
|
||||
* @covers \AtolOnline\Helpers::toKop
|
||||
*/
|
||||
public function testRublesToKopeks(?float $rubles, int $kopeks): void
|
||||
{
|
||||
$result = Helpers::RubToKop($rubles);
|
||||
$result = Helpers::toKop($rubles);
|
||||
$this->assertIsInt($result);
|
||||
$this->assertEquals($result, $kopeks);
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
namespace AtolOnlineTests;
|
||||
|
||||
use AtolOnline\{
|
||||
Entities\Vat,
|
||||
Enums\VatTypes};
|
||||
|
||||
/**
|
||||
* Class VatTest
|
||||
*/
|
||||
class VatTestTodo extends BasicTestCase
|
||||
{
|
||||
/**
|
||||
* Тестирует каждый тип ставки НДС
|
||||
*
|
||||
* @dataProvider vatProvider
|
||||
* @param string $vat_type Тип НДС
|
||||
* @param float $sum Исходная сумма
|
||||
* @param float $expected_set Ожидаемый результат после установки суммы
|
||||
* @param float $expected_add Ожидаемый результат после прибавления 20р
|
||||
*/
|
||||
public function testVat(string $vat_type, float $sum, float $expected_set, float $expected_add)
|
||||
{
|
||||
$vat = new Vat($vat_type);
|
||||
$this->assertEquals(0, $vat->getFinalSum(), 'Test ' . $vat_type . ' | 1 step');
|
||||
$vat->setSum($sum);
|
||||
$this->assertEquals($expected_set, $vat->getFinalSum(), 'Test ' . $vat_type . ' | 2 step');
|
||||
$vat->addSum(20);
|
||||
$this->assertEquals($expected_add, $vat->getFinalSum(), 'Test ' . $vat_type . ' | 3 step');
|
||||
$vat->addSum(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Провайдер данных для тестирования разных типов ставок НДС
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function vatProvider()
|
||||
{
|
||||
return [
|
||||
[VatTypes::NONE, 100, 0, 0],
|
||||
[VatTypes::VAT0, 100, 0, 0],
|
||||
[VatTypes::VAT10, 100, 9.09, 10.9],
|
||||
[VatTypes::VAT18, 100, 15.25, 18.3],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user