def test_transferencia_caja_boveda_con_error(context): operador = context.operador_remesas boveda = context.boveda apertura_boveda = Apertura( {m: 1000 for m in context.boveda.monedas_permitidas}) driver_remesas = context.driver_manager.main_driver caja = context.sucursal.cajas[0] cajero = context.cajeros[0] apertura_caja = Apertura( {moneda: 1000 for moneda in caja.monedas_permitidas}) monedas_extraccion = caja.monedas_permitidas.intersection( context.boveda.monedas) transferencia = Transferencia( caja, context.boveda, {moneda: 165 for moneda in monedas_extraccion}) login_action = LoginAction(context) logout_action = LogoutAction(context) apertura_action = AperturaOperableAction(context) cierre_caja_action = CierreTotalCajaAction(context) cierre_boveda_action = CierreOperableAction(context) completar_transferencia_action = CompletarTransferenciaAction(context) recibir_transferencia_action = RecibirTransferenciaAction(context) problema_transferencia_action = ReportarProblemaTranferenciaAction(context) transferencia_finalizada_action = TransferenciaFinalizadaAction(context) with allure.step("El operador de remesas apertura la boveda general"): login_action.verify_state().do(operador, boveda).success("Apertura Boveda") apertura_action.fast_forward(operador, boveda, apertura_boveda) boveda.agregar_operacion(apertura_boveda) driver_cajero = context.driver_manager.new_driver() context.page.set_active_driver(driver_cajero) with allure.step("El cajero apertura su caja"): login_action.verify_state().do(cajero, caja).success("Apertura Caja") apertura_action.fast_forward(cajero, caja, apertura_caja, desbloquear=True) caja.agregar_operacion(apertura_caja) with allure.step(f"El cajero genera un deposito en la boveda general"): transferencia.codigo = completar_transferencia_action.fast_forward( cajero, transferencia) caja.agregar_operacion(transferencia) context.page.set_active_driver(driver_remesas) with allure.step("Boveda general reporta un error en la transferencia"): recibir_transferencia_action.verify_state(boveda).do( transferencia).success() problema_transferencia_action.verify_state(boveda, transferencia).do( "Reporte de Prueba", operador.password) problema_transferencia_action.success() boveda.agregar_operacion(transferencia) context.page.set_active_driver(driver_cajero) with allure.step("La transferencia se reporta con problemas"): transferencia_finalizada_action.verify_state(caja).do(transferencia) transferencia.estado = transferencia_finalizada_action.success( "Hubo un Problema") with allure.step("El cajero realiza un cierre total correctamente"): cierre_caja = CierreTotal(caja.balance()) cierre_caja_action.fast_forward(cajero, caja, cierre_caja) caja.agregar_operacion(cierre_caja) logout_action.verify_state(cajero).do().success() context.page.set_active_driver(driver_remesas) with allure.step( "El operador de remesas realiza un cierre total correctamente"): cierre_boveda = CierreTotal(boveda.balance()) cierre_boveda_action.fast_forward(operador, boveda, cierre_boveda) context.boveda.agregar_operacion(cierre_boveda) logout_action.verify_state(operador).do().success()
def test_transferencia_boveda_caja_boveda(context): driver_cajero = context.driver_manager.main_driver cajero = context.cajeros[0] caja = context.sucursal.cajas[0] monto_apertura_caja = 100 apertura_caja = Apertura( {moneda: monto_apertura_caja for moneda in caja.monedas_permitidas}) operador = context.operador_remesas boveda = context.boveda monto_apertura_boveda = 1000 apertura_boveda = Apertura( {m: monto_apertura_boveda for m in context.boveda.monedas_permitidas}) monedas = boveda.monedas_permitidas.intersection(caja.monedas_permitidas) transferencia = Transferencia( boveda, caja, {moneda: randint(1, 100) for moneda in monedas}) login_action = LoginAction(context) logout_action = LogoutAction(context) apertura_action = AperturaOperableAction(context) cierre_caja_action = CierreTotalCajaAction(context) cierre_boveda_action = CierreOperableAction(context) completar_transferencia_action = CompletarTransferenciaAction(context) recepcionar_transferencia_action = RecepcionarTransferenciaAction(context) confirmar_transferencia_action = ConfirmarTransferenciaAction(context) transferencia_finalizada_action = TransferenciaFinalizadaAction(context) with allure.step("El cajero apertura su caja"): login_action.verify_state().do(cajero, caja).success("Apertura Caja") apertura_action.fast_forward(cajero, caja, apertura_caja, desbloquear=True) caja.agregar_operacion(apertura_caja) driver_remesas = context.driver_manager.new_driver() context.page.set_active_driver(driver_remesas) with allure.step("El operador de remesas apertura la boveda general"): login_action.verify_state().do(operador, boveda).success("Apertura Boveda") apertura_action.fast_forward(operador, boveda, apertura_boveda) boveda.agregar_operacion(apertura_boveda) with allure.step( "El operador de remesas genera una transferencia de salida hacia caja destino" ): SeleccionarDestinoTransferenciaAction(context).verify_state(boveda).do( caja).success() completar_transferencia_action.verify_state(transferencia).do( operador.password) transferencia.codigo = completar_transferencia_action.success() boveda.agregar_operacion(transferencia) context.page.set_active_driver(driver_cajero) with allure.step( "El cajero de destino recibe la transferencia y confirma con montos correctos" ): transferencia.estado = confirmar_transferencia_action.fast_forward( cajero, transferencia) caja.agregar_operacion(transferencia) context.page.set_active_driver(driver_remesas) with allure.step("la transferencia se contabiliza y ya no se muestra"): transferencia_finalizada_action.verify_state(boveda).do(transferencia) transferencia.estado = transferencia_finalizada_action.success( "Contabilizada") context.page.set_active_driver(driver_cajero) transferencia2 = Transferencia( caja, boveda, { moneda: monto + monto_apertura_caja for moneda, monto in transferencia.montos.items() }) with allure.step( "El cajero de destino genera una nueva transferencia hacia la boveda general" ): transferencia2.codigo = completar_transferencia_action.fast_forward( cajero, transferencia2) caja.agregar_operacion(transferencia2) context.page.set_active_driver(driver_remesas) with allure.step( "Boveda general recepciona el deposito y luego lo confirma con montos correctos" ): transferencia2.estado = recepcionar_transferencia_action.fast_forward( operador, transferencia2) confirmar_transferencia_action.fast_forward(operador, transferencia2) context.page.set_active_driver(driver_cajero) with allure.step("la transferencia se contabiliza y ya no se muestra"): transferencia_finalizada_action.verify_state(caja).do(transferencia2) transferencia2.estado = transferencia_finalizada_action.fast_forward( transferencia2) boveda.agregar_operacion(transferencia2) with allure.step("El cajero realiza un cierre total"): cierre_caja = CierreTotal(caja.balance()) cierre_caja_action.fast_forward(cajero, caja, cierre_caja) caja.agregar_operacion(cierre_caja) logout_action.verify_state(cajero).do().success() context.page.set_active_driver(driver_remesas) with allure.step( "El operador de remesas realiza un cierre total correctamente"): cierre_boveda = CierreTotal(boveda.balance()) cierre_boveda_action.fast_forward(operador, boveda, cierre_boveda) context.boveda.agregar_operacion(cierre_boveda) logout_action.verify_state(operador).do().success()
def test_cancelar_transferencia_boveda_caja_pendiente_recepcion(context): driver_caja = context.driver_manager.main_driver cajero = context.cajeros[0] caja = context.sucursal.cajas[0] monto_apertura_caja = 100 apertura_caja = Apertura( {moneda: monto_apertura_caja for moneda in caja.monedas_permitidas}) operador = context.operador_remesas boveda = context.boveda monto_apertura_boveda = 1000 apertura_boveda = Apertura({ moneda: monto_apertura_boveda for moneda in boveda.monedas_permitidas }) monedas = boveda.monedas_permitidas.intersection(caja.monedas_permitidas) transferencia = Transferencia( boveda, caja, {moneda: randint(1, 100) for moneda in monedas}) login_action = LoginAction(context) logout_action = LogoutAction(context) apertura_action = AperturaOperableAction(context) cierre_caja_action = CierreTotalCajaAction(context) cierre_boveda_action = CierreOperableAction(context) completar_transferencia_action = CompletarTransferenciaAction(context) recibir_transferencia_action = RecibirTransferenciaAction(context) cancelar_transferencia_action = CancelarTransferenciaAction(context) confirmar_transferencia_action = ConfirmarTransferenciaAction(context) transferencia_finalizada_action = TransferenciaFinalizadaAction(context) with allure.step("El cajero de destino apertura su caja"): login_action.verify_state().do(cajero, caja).success("Apertura Caja") apertura_action.fast_forward(cajero, caja, apertura_caja, desbloquear=True) caja.agregar_operacion(apertura_caja) driver_operador = context.driver_manager.new_driver() context.page.set_active_driver(driver_operador) with allure.step("El operador de remesas apertura la boveda general"): login_action.verify_state().do(operador, boveda).success("Apertura Boveda") apertura_action.fast_forward(operador, boveda, apertura_boveda) boveda.agregar_operacion(apertura_boveda) with allure.step( "El operador de remesas genera una transferencia de salida hacia caja destino" ): transferencia.codigo = completar_transferencia_action.fast_forward( operador, transferencia) boveda.agregar_operacion(transferencia) context.page.set_active_driver(driver_caja) with allure.step( "La transferencia se muestra en los depositos pendientes del cajero" ): recibir_transferencia_action.verify_state(caja).do( transferencia).success() context.page.set_active_driver(driver_operador) with allure.step("El operador cancela la transferencia"): cancelar_transferencia_action.verify_state(boveda, transferencia).do( operador.password).success() context.page.set_active_driver(driver_caja) with allure.step( "El cajero no podra realizar ninguna accion con el deposito"): recibir_transferencia_action.success() confirmar_transferencia_action.verify_state(caja, transferencia).do( cajero.password).failure() with allure.step("y cuando refresque la pantalla ya no vera el deposito"): transferencia_finalizada_action.verify_state(caja).do(transferencia) transferencia.estado = transferencia_finalizada_action.success( "Cancelada") with allure.step( "El cajero de destino realiza un cierre total correctamente"): cierre_caja = CierreTotal(caja.balance()) cierre_caja_action.fast_forward(cajero, caja, cierre_caja) caja.agregar_operacion(cierre_caja) logout_action.verify_state(cajero).do().success() context.page.set_active_driver(driver_operador) with allure.step( "El operador de remesas realiza un cierre total correctamente"): cierre_boveda = CierreTotal(boveda.balance()) cierre_boveda_action.fast_forward(operador, boveda, cierre_boveda) boveda.agregar_operacion(cierre_boveda) logout_action.verify_state(operador).do().success()
def test_transferencia_caja_caja_una_moneda_de_dos(context, monto_apertura_destino): driver_origen = context.driver_manager.main_driver caja_origen = context.sucursal.cajas[0] cajero_origen = context.cajeros[0] apertura_origen = Apertura( {m: 1000 for m in caja_origen.monedas_permitidas}) caja_destino = context.sucursal.cajas[1] cajero_destino = context.cajeros[1] apertura_destino = Apertura( {m: monto_apertura_destino for m in caja_origen.monedas_permitidas}) monedas = caja_origen.monedas_permitidas.intersection( caja_destino.monedas_permitidas) transferencia = Transferencia(caja_origen, caja_destino, {next(iter(monedas)): randint(1, 150)}) login_action = LoginAction(context) logout_action = LogoutAction(context) apertura_action = AperturaOperableAction(context) cierre_caja_action = CierreTotalCajaAction(context) completar_transferencia_action = CompletarTransferenciaAction(context) confirmar_transferencia_action = ConfirmarTransferenciaAction(context) transferencia_finalizada_action = TransferenciaFinalizadaAction(context) with allure.step("El cajero de origen apertura su caja"): login_action.verify_state().do(cajero_origen, caja_origen).success("Apertura Caja") apertura_action.fast_forward(cajero_origen, caja_origen, apertura_origen, desbloquear=True) caja_origen.agregar_operacion(apertura_origen) driver_destino = context.driver_manager.new_driver() context.page.set_active_driver(driver_destino) with allure.step("El cajero de destino apertura su caja"): login_action.verify_state().do(cajero_destino, caja_destino).success("Apertura Caja") apertura_action.fast_forward(cajero_destino, caja_destino, apertura_destino, desbloquear=monto_apertura_destino > 0) caja_destino.agregar_operacion(apertura_destino) context.page.set_active_driver(driver_origen) with allure.step( f"El cajero de origen genera un deposito en la caja destino"): transferencia.codigo = completar_transferencia_action.fast_forward( cajero_origen, transferencia) caja_origen.agregar_operacion(transferencia) context.page.set_active_driver(driver_destino) with allure.step( "El cajero de destino recibe la transferencia y la confirma con montos correctos" ): transferencia.estado = confirmar_transferencia_action.fast_forward( cajero_destino, transferencia) caja_destino.agregar_operacion(transferencia) context.page.set_active_driver(driver_origen) with allure.step("La transferencia se contabiliza"): transferencia_finalizada_action.verify_state(caja_origen).do( transferencia) transferencia.estado = transferencia_finalizada_action.success( "Contabilizada") with allure.step( "El cajero de origen realiza un cierre total correctamente"): cierre_caja_origen = CierreTotal(caja_origen.balance()) cierre_caja_action.fast_forward(cajero_origen, caja_origen, cierre_caja_origen) caja_origen.agregar_operacion(cierre_caja_origen) logout_action.verify_state(cajero_origen).do().success() context.page.set_active_driver(driver_destino) with allure.step( "El cajero de destino realiza un cierre total correctamente"): cierre_caja_destino = CierreTotal(caja_destino.balance()) cierre_caja_action.fast_forward(cajero_destino, caja_destino, cierre_caja_destino) logout_action.verify_state(cajero_destino).do().success()