container = buildContainer(); } 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; $ventaData = [ 'fecha' => $fecha, 'propietario' => $propietario->rut, 'propiedad' => $propiedad->id, 'fecha_ingreso' => new DateTimeImmutable($fecha)->add(new DateInterval('P3D'))->format('Y-m-d'), ]; $ventaRepository = $this->container->get(Repository\Venta::class); $venta = $ventaRepository->create($ventaData); $venta = $ventaRepository->save($venta); $cuotaData = [ 'venta' => $venta->id, 'fecha' => '2022-01-01', 'valor' => 10000, ]; $cuotaService = $this->container->get(Service\Venta\Cuota::class); $cuota = $cuotaService->add($cuotaData); $this->assertEquals(0.0, $cuota->pago->uf); $queueService = $this->container->get(Service\Queue::class); $queueService->run(); $cuota = $cuotaService->getById($cuota->id); $this->assertNotEquals(0.0, $cuota->pago->uf); } }