From e5cf4e70671ac6523dd019d7d821a2fc85282250 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Tue, 9 Sep 2025 16:24:00 -0300 Subject: [PATCH] Test BonoPie --- .../unit/src/Service/Venta/BonoPieTest.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 app/tests/unit/src/Service/Venta/BonoPieTest.php diff --git a/app/tests/unit/src/Service/Venta/BonoPieTest.php b/app/tests/unit/src/Service/Venta/BonoPieTest.php new file mode 100644 index 0000000..6d739a6 --- /dev/null +++ b/app/tests/unit/src/Service/Venta/BonoPieTest.php @@ -0,0 +1,65 @@ +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)); + } +}