Test BonoPie
This commit is contained in:
65
app/tests/unit/src/Service/Venta/BonoPieTest.php
Normal file
65
app/tests/unit/src/Service/Venta/BonoPieTest.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
namespace Incoviba\Test\Unit\Service\Venta;
|
||||||
|
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Faker;
|
||||||
|
use Incoviba\Common\Implement;
|
||||||
|
use Incoviba\Service;
|
||||||
|
use Incoviba\Repository;
|
||||||
|
use Incoviba\Model;
|
||||||
|
|
||||||
|
class BonoPieTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testAdd(): void
|
||||||
|
{
|
||||||
|
$faker = Faker\factory::create();
|
||||||
|
$fecha = $faker->dateTimeBetween('-1 week');
|
||||||
|
$data = [
|
||||||
|
'fecha' => $fecha->format('Y-m-d'),
|
||||||
|
'valor' => $faker->randomFloat(2, 100, 1000),
|
||||||
|
];
|
||||||
|
|
||||||
|
$uf = $faker->randomFloat(2, 20000, 40000);
|
||||||
|
$pago = new Model\Venta\Pago();
|
||||||
|
$pago->id = $faker->randomNumber();
|
||||||
|
$pago->fecha = $fecha;
|
||||||
|
$pago->valor = $data['valor'] * $uf;
|
||||||
|
$pago->uf = $uf;
|
||||||
|
$bonoPie = new Model\Venta\BonoPie();
|
||||||
|
$bonoPie->valor = $data['valor'];
|
||||||
|
$bonoPie->pago = $pago;
|
||||||
|
|
||||||
|
$logger = $this->getMockBuilder(LoggerInterface::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$bonoPieRepository = $this->getMockBuilder(Repository\Venta\BonoPie::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$bonoPieRepository->method('fetchByPago')->willThrowException(new Implement\Exception\EmptyResult('fetchByPago'));
|
||||||
|
$bonoPieRepository->method('create')->willReturn($bonoPie);
|
||||||
|
$bonoPieRepository->method('save')->willReturnCallback(function($bonoPie) use ($faker) {
|
||||||
|
$bonoPie->id = $faker->randomNumber();
|
||||||
|
return $bonoPie;
|
||||||
|
});
|
||||||
|
$bonoPieRepository->method('filterData')->willReturnCallback(function($data) {
|
||||||
|
return array_intersect_key($data, array_flip(['valor', 'pago']));
|
||||||
|
});
|
||||||
|
$valorService = $this->getMockBuilder(Service\Valor::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$valorService->method('toUF')->willReturn($data['valor']);
|
||||||
|
$ufService = $this->getMockBuilder(Service\UF::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$ufService->method('get')->with($fecha)->willReturn($uf);
|
||||||
|
$pagoService = $this->getMockBuilder(Service\Venta\Pago::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$pagoService->method('add')->willReturn($pago);
|
||||||
|
|
||||||
|
$bonoPieService = new Service\Venta\BonoPie($logger, $bonoPieRepository, $valorService, $ufService, $pagoService);
|
||||||
|
|
||||||
|
$this->assertEquals($bonoPie, $bonoPieService->add($data));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user