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