Test BonoPie

This commit is contained in:
Juan Pablo Vial
2025-09-09 16:24:00 -03:00
parent a18465cacf
commit e5cf4e7067

View 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));
}
}