mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-11-16 03:50:47 +00:00
AnthonyAxenov
77481884ad
- строгая типизация - переработан класс `TestEnvParams`: - вынесен на уровень выше из под `AtolOnline\Constants` - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2 - актуализированы `PaymentObjects` согласно #5 - исходники вынесены не уровень выше в `src` - константы теперь enum через `myclabs/php-enum` - новые константы `DocumentTypes` - классы констант финализированы - все исключения переименованы, а многие так или иначе отрефакторены (не полностью) - новые исключения `InvalidSnoException`, `InvalidPaymentAddressException` - `helpers.php` стал полноценным классом `Helpers` - удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`) - удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()` - сущности `Client` и `Company` получили свои имплементации для `email` и `inn` - доработки в `BasicTestCase` - полное покрытие тестами: `Client`, `Company`, `Helpers` - поправлен `phpunit.xml` - везде обновлены копирайты - актуализированы и исправлены phpdoc, return types - начато введение `strict_types=1` - минимальный php теперь 8.0 - обновлены все зависимости - подключен пакет коллекций laravel для будущего использования - теперь можно `composer test` и `composer test-cov`
123 lines
3.3 KiB
PHP
123 lines
3.3 KiB
PHP
<?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;
|
||
|
||
use AtolOnline\Helpers;
|
||
|
||
/**
|
||
* Набор тестов для проверки работы функций-хелперов
|
||
*/
|
||
class HelpersTest extends BasicTestCase
|
||
{
|
||
/**
|
||
* Провайдер копеек для перевода в рубли
|
||
*
|
||
* @return array<array<int|null, float>>
|
||
*/
|
||
public function providerKopeksToRubles(): array
|
||
{
|
||
return [
|
||
[null, 0],
|
||
[0, 0],
|
||
[1, 0.01],
|
||
[12, 0.12],
|
||
[123, 1.23],
|
||
[1234, 12.34],
|
||
[12345, 123.45],
|
||
[-1, 0.01],
|
||
[-12, 0.12],
|
||
[-123, 1.23],
|
||
[-1234, 12.34],
|
||
[-12345, 123.45],
|
||
];
|
||
}
|
||
|
||
/**
|
||
* Провайдер рублей для перевода в копейки
|
||
*
|
||
* @return array<array<float|null, int>>
|
||
*/
|
||
public function providerRublesToKopeks(): array
|
||
{
|
||
return [
|
||
[null, 0],
|
||
[0, 0],
|
||
[0.01, 1],
|
||
[0.12, 12],
|
||
[1.23, 123],
|
||
[12.34, 1234],
|
||
[123.45, 12345],
|
||
[-0.01, 1],
|
||
[-0.12, 12],
|
||
[-1.23, 123],
|
||
[-12.34, 1234],
|
||
[-123.45, 12345],
|
||
];
|
||
}
|
||
|
||
/**
|
||
* Провайдер для тестирования генерации рандомной строки
|
||
*
|
||
* @return array<array<int, int>>
|
||
*/
|
||
public function providerRandomStr(): array
|
||
{
|
||
return [
|
||
[0, 0],
|
||
[1, 1],
|
||
[5, 5],
|
||
[-1, 1],
|
||
[-5, 5],
|
||
];
|
||
}
|
||
|
||
//------------------------------------------------------------------------------------------------------------------
|
||
|
||
/**
|
||
* Тестирует перевод копеек в рубли
|
||
*
|
||
* @dataProvider providerKopeksToRubles
|
||
* @covers \AtolOnline\Helpers::KopToRub
|
||
*/
|
||
public function testKopeksToRubles(?int $kopeks, float $rubles): void
|
||
{
|
||
$result = Helpers::KopToRub($kopeks);
|
||
$this->assertIsFloat($result);
|
||
$this->assertEquals($result, $rubles);
|
||
}
|
||
|
||
/**
|
||
* Тестирует перевод копеек в рубли
|
||
*
|
||
* @dataProvider providerRublesToKopeks
|
||
* @covers \AtolOnline\Helpers::RubToKop
|
||
*/
|
||
public function testRublesToKopeks(?float $rubles, int $kopeks): void
|
||
{
|
||
$result = Helpers::RubToKop($rubles);
|
||
$this->assertIsInt($result);
|
||
$this->assertEquals($result, $kopeks);
|
||
}
|
||
|
||
/**
|
||
* Тестирует длину рандомной строки
|
||
*
|
||
* @param int $input
|
||
* @param int $output
|
||
* @dataProvider providerRandomStr
|
||
*/
|
||
public function testRandomString(int $input, int $output): void
|
||
{
|
||
$result = Helpers::randomStr($input);
|
||
$this->assertIsString($result);
|
||
$this->assertEquals($output, strlen($result));
|
||
// тестировать на наличие цифр быссмысленно
|
||
}
|
||
} |