develop (#45)
Co-authored-by: Juan Pablo Vial <jpvialb@incoviba.cl> Reviewed-on: #45
This commit is contained in:
28
app/tests/integration/API/Ventas/MediosPago/TokuTest.php
Normal file
28
app/tests/integration/API/Ventas/MediosPago/TokuTest.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
namespace Tests\Integration\API\Ventas\MediosPago;
|
||||
|
||||
use Tests\Extension\AbstractIntegration;
|
||||
|
||||
class TokuTest extends AbstractIntegration
|
||||
{
|
||||
public function testCuotas()
|
||||
{
|
||||
|
||||
}
|
||||
public function testSuccess()
|
||||
{
|
||||
|
||||
}
|
||||
public function testTest()
|
||||
{
|
||||
|
||||
}
|
||||
public function testReset()
|
||||
{
|
||||
|
||||
}
|
||||
public function testEnqueue()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
92
app/tests/integration/API/Ventas/ReservationTest.php
Normal file
92
app/tests/integration/API/Ventas/ReservationTest.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
namespace Incoviba\Tests\Integration\API\Ventas;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Faker;
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Service;
|
||||
use Incoviba\Repository;
|
||||
use Tests\Extension\AbstractIntegration;
|
||||
use Tests\Extension\ContainerTrait;
|
||||
use Tests\Extension\Faker\Provider\Rut;
|
||||
|
||||
class ReservationTest extends TestCase
|
||||
{
|
||||
use ContainerTrait;
|
||||
|
||||
public function testAdd(): void
|
||||
{
|
||||
$faker = Faker\Factory::create('es_CL');
|
||||
$faker->addProvider(new Rut($faker));
|
||||
|
||||
$comunas = $this->container->get(Repository\Comuna::class)->fetchAll();
|
||||
$projects = $this->container->get(Repository\Proyecto::class)->fetchAll();
|
||||
$project = $faker->randomElement($projects);
|
||||
$brokers = $this->container->get(Repository\Proyecto\Broker::class)->fetchAll();
|
||||
$units = $this->container->get(Repository\Venta\Unidad::class)->fetchAll();
|
||||
|
||||
$selectedUnits = [];
|
||||
$unitsValue = [];
|
||||
$unitsCount = $faker->numberBetween(1, 3);
|
||||
for ($i = 0; $i < $unitsCount; $i++) {
|
||||
$selectedUnits[] = $faker->randomElement($units)->id;
|
||||
$unitsValue[] = $faker->randomFloat(2, 1000, 10000);
|
||||
}
|
||||
|
||||
$broker = $faker->randomElement($brokers);
|
||||
|
||||
$activePromotions = $this->container->get(Repository\Venta\Promotion::class)->fetchActiveByProject($project->id);
|
||||
|
||||
$promotionsCount = $faker->numberBetween(0, min(3, count($activePromotions)));
|
||||
$promotions = [];
|
||||
for ($i = 0; $i < $promotionsCount; $i++) {
|
||||
$promotions[] = $faker->randomElement($activePromotions)->id;
|
||||
}
|
||||
$rut = $faker->rut(false, false);
|
||||
$data = [
|
||||
'project_id' => $faker->randomElement($projects)->id,
|
||||
'date' => $faker->dateTimeBetween('-2 years', 'now')->format('Y-m-d'),
|
||||
'buyer_rut' => $rut,
|
||||
'buyer_digit' => $faker->digitoVerificador($rut),
|
||||
'buyer_names' => $faker->firstName,
|
||||
'buyer_last_name' => $faker->lastName,
|
||||
'buyer_last_name2' => $faker->lastName,
|
||||
'buyer_email' => $faker->email,
|
||||
'buyer_phone' => $faker->randomNumber(8),
|
||||
'buyer_address_street' => $faker->streetName,
|
||||
'buyer_address_number' => $faker->buildingNumber,
|
||||
'buyer_address_extra' => $faker->streetAddress,
|
||||
'buyer_address_comuna_id' => $faker->randomElement($comunas)->id,
|
||||
'units' => $selectedUnits,
|
||||
'units_value' => $unitsValue,
|
||||
'broker_rut' => $broker ? $broker->rut : '',
|
||||
];
|
||||
if (count($promotions) > 0) {
|
||||
$data['promotions'] = $promotions;
|
||||
}
|
||||
|
||||
$reservation = $this->container->get(Service\Venta\Reservation::class)->add($data);
|
||||
$this->assertInstanceOf(Model\Venta\Reservation::class, $reservation);
|
||||
$this->assertEquals($data['date'], $reservation->date->format('Y-m-d'));
|
||||
$this->assertEquals($data['project_id'], $reservation->project->id);
|
||||
$this->assertEquals($data['buyer_rut'], $reservation->buyer->rut);
|
||||
$this->assertEquals($data['buyer_digit'], $reservation->buyer->digito);
|
||||
$this->assertEquals($data['buyer_names'], $reservation->buyer->nombres);
|
||||
$this->assertEquals($data['buyer_last_name'], $reservation->buyer->apellidoPaterno);
|
||||
$this->assertEquals($data['buyer_last_name2'], $reservation->buyer->apellidoMaterno);
|
||||
$this->assertEquals($data['buyer_email'], $reservation->buyer->datos->email);
|
||||
$this->assertEquals($data['buyer_phone'], $reservation->buyer->datos->telefono);
|
||||
$this->assertEquals($data['buyer_address_street'], $reservation->buyer->datos->direccion->calle);
|
||||
$this->assertEquals($data['buyer_address_number'], $reservation->buyer->datos->direccion->numero);
|
||||
$this->assertEquals($data['buyer_address_extra'], $reservation->buyer->datos->direccion->extra);
|
||||
$this->assertEquals($data['buyer_address_comuna_id'], $reservation->buyer->datos->direccion->comuna->id);
|
||||
if ($broker !== null) {
|
||||
$this->assertEquals($data['broker_rut'], $reservation->broker->rut);
|
||||
}
|
||||
$this->assertEquals(1, $reservation->currentState()->type->value);
|
||||
}
|
||||
}
|
14
app/tests/integration/HomeTest.php
Normal file
14
app/tests/integration/HomeTest.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
namespace Test\Integration;
|
||||
|
||||
use Tests\Extension\AbstractIntegration;
|
||||
|
||||
class HomeTest extends AbstractIntegration
|
||||
{
|
||||
public function testLoad(): void
|
||||
{
|
||||
$response = $this->client->get('/');
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertStringContainsString('Incoviba', $response->getBody()->getContents());
|
||||
}
|
||||
}
|
135
app/tests/integration/QueueTest.php
Normal file
135
app/tests/integration/QueueTest.php
Normal file
@ -0,0 +1,135 @@
|
||||
<?php
|
||||
namespace Incoviba\Test\Integration;
|
||||
|
||||
use DateInterval;
|
||||
use DateTimeImmutable;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Faker;
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Service;
|
||||
use Incoviba\Repository;
|
||||
use Tests\Extension\ContainerTrait;
|
||||
use Tests\Extension\Faker\Provider\Rut;
|
||||
|
||||
class QueueTest extends TestCase
|
||||
{
|
||||
use ContainerTrait;
|
||||
|
||||
public function testServiceWorker(): void
|
||||
{
|
||||
$faker = Faker\Factory::create();
|
||||
$faker->addProvider(new Rut($faker));
|
||||
$pagoData = [
|
||||
'fecha' => '2022-01-01',
|
||||
'valor' => 10000,
|
||||
];
|
||||
$pagoService = $this->container->get(Service\Venta\Pago::class);
|
||||
$pago = $pagoService->add($pagoData);
|
||||
|
||||
$this->assertEquals(0.0, $pago->uf);
|
||||
|
||||
$queueService = $this->container->get(Service\Queue::class);
|
||||
$queueService->run();
|
||||
|
||||
$pago = $pagoService->getById($pago->id);
|
||||
$this->assertNotEquals(0.0, $pago->uf);
|
||||
|
||||
$direccionRepository = $this->container->get(Repository\Direccion::class);
|
||||
$direcciones = $direccionRepository->fetchAll();
|
||||
$direccion = $faker->randomElement($direcciones);
|
||||
$rut = $faker->rut(false, false);
|
||||
$propietarioData = [
|
||||
'rut' => $rut,
|
||||
'dv' => $faker->digitoVerificador($rut),
|
||||
'direccion' => $direccion->id,
|
||||
'nombres' => $faker->firstName,
|
||||
'apellido_paterno' => $faker->lastName,
|
||||
'apellido_materno' => $faker->lastName,
|
||||
'email' => $faker->email,
|
||||
'telefono' => $faker->randomNumber(9),
|
||||
];
|
||||
$propietarioRepository = $this->container->get(Repository\Venta\Propietario::class);
|
||||
$propietario = $propietarioRepository->create($propietarioData);
|
||||
$propietario = $propietarioRepository->save($propietario);
|
||||
$proyectoRepository = $this->container->get(Repository\Proyecto::class);
|
||||
$proyectos = $proyectoRepository->fetchAll();
|
||||
$proyecto = $faker->randomElement($proyectos);
|
||||
$tipoUnidadRepository = $this->container->get(Repository\Proyecto\TipoUnidad::class);
|
||||
$tiposUnidades = $tipoUnidadRepository->fetchAll();
|
||||
$tipoUnidad = $faker->randomElement($tiposUnidades);
|
||||
$proyectoTipoUnidadData = [
|
||||
'proyecto' => $proyecto->id,
|
||||
'tipo' => $tipoUnidad->id,
|
||||
'nombre' => $faker->word,
|
||||
'descripcion' => $faker->sentence,
|
||||
'abreviacion' => substr($faker->word, 0, 1),
|
||||
'logia' => $faker->randomFloat(2, 1, 20),
|
||||
'terraza' => $faker->randomFloat(2, 1, 20),
|
||||
'm2' => $faker->randomFloat(2, 20, 100),
|
||||
];
|
||||
$proyectoTipoUnidadRepository = $this->container->get(Repository\Proyecto\ProyectoTipoUnidad::class);
|
||||
$proyectoTipoUnidad = $proyectoTipoUnidadRepository->create($proyectoTipoUnidadData);
|
||||
$proyectoTipoUnidad = $proyectoTipoUnidadRepository->save($proyectoTipoUnidad);
|
||||
$unidadData = [
|
||||
'proyecto' => $proyecto->id,
|
||||
'tipo' => $tipoUnidad->id,
|
||||
'piso' => $faker->numberBetween(1, 300),
|
||||
'descripcion' => "{$tipoUnidad->descripcion} {$faker->numberBetween(1, 300)}",
|
||||
'orientacion' => $faker->randomElement(['N', 'NE', 'NO', 'S', 'SE', 'SO', 'E', 'O']),
|
||||
'pt' => $proyectoTipoUnidad->id,
|
||||
];
|
||||
$unidadRepository = $this->container->get(Repository\Venta\Unidad::class);
|
||||
$unidad = $unidadRepository->create($unidadData);
|
||||
$unidad = $unidadRepository->save($unidad);
|
||||
$propiedadData = [
|
||||
'unidad_principal' => $unidad->id,
|
||||
];
|
||||
$propiedadRepository = $this->container->get(Repository\Venta\Propiedad::class);
|
||||
$propiedad = $propiedadRepository->create($propiedadData);
|
||||
$propiedad = $propiedadRepository->save($propiedad);
|
||||
$fecha = $faker->date;
|
||||
$pieData = [
|
||||
'valor' => 10000,
|
||||
'cuotas' => 12,
|
||||
'fecha' => $fecha,
|
||||
];
|
||||
$pieRepository = $this->container->get(Repository\Venta\Pie::class);
|
||||
$pie = $pieRepository->create($pieData);
|
||||
$pie = $pieRepository->save($pie);
|
||||
$ventaData = [
|
||||
'fecha' => $fecha,
|
||||
'propietario' => $propietario->rut,
|
||||
'propiedad' => $propiedad->id,
|
||||
'fecha_ingreso' => new DateTimeImmutable($fecha)->add(new DateInterval('P3D'))->format('Y-m-d'),
|
||||
'pie' => $pie->id,
|
||||
];
|
||||
$ventaRepository = $this->container->get(Repository\Venta::class);
|
||||
$venta = $ventaRepository->create($ventaData);
|
||||
$venta = $ventaRepository->save($venta);
|
||||
$bancoData = [
|
||||
'nombre' => $faker->word,
|
||||
];
|
||||
$bancoRepository = $this->container->get(Repository\Contabilidad\Banco::class);
|
||||
$banco = $bancoRepository->create($bancoData);
|
||||
$banco = $bancoRepository->save($banco);
|
||||
|
||||
$cuotaData = [
|
||||
'pie' => $pie->id,
|
||||
'fecha' => $faker->dateTimeBetween('2024-01-01')->format('Y-m-d'),
|
||||
'valor' => 10000,
|
||||
'banco' => $banco->id,
|
||||
];
|
||||
$cuotaService = $this->container->get(Service\Venta\Cuota::class);
|
||||
$cuota = $cuotaService->add($cuotaData);
|
||||
|
||||
$this->assertEquals(0.0, $cuota->pago->uf);
|
||||
|
||||
$queueService->run();
|
||||
|
||||
$cuota = $cuotaService->getById($cuota->id);
|
||||
$this->assertGreaterThan(0.0, $cuota->pago->uf);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user