def test_aperturar_cerrar_boveda(context):
    boveda = context.boveda
    operador = context.operador_remesas

    apertura = Apertura({moneda: 0 for moneda in boveda.monedas_permitidas})
    apertura_action = AperturaOperableAction(context)

    cierre = CierreTotal({moneda: 0 for moneda in boveda.monedas_permitidas})
    cierre_action = CierreOperableAction(context)

    with allure.step("Un usuario ingresa como operador de boveda"):
        LoginAction(context).verify_state().do(
            operador, boveda).success("Apertura Boveda")

    with allure.step(f"Apertura la caja {boveda.codigo} con montos en 0"):
        apertura_action.verify_state(boveda).do(apertura)

    with allure.step("la caja se apertura"):
        apertura_action.success()

    with allure.step("Realiza un cierre total con montos correctos"):
        cierre_action.verify_state(boveda, cierre).do(operador.password)

    with allure.step("La boveda se cierra totalmente"):
        cierre_action.success()

    LogoutAction(context).verify_state(operador).do().success()
Example #2
0
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()
Example #3
0
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()
Example #4
0
def test_cierre_boveda_con_depositos_pendiente_recepcion(context):
    driver_cajero = context.driver_manager.main_driver
    caja = context.sucursal.cajas[0]
    monto_apertura_caja = 1000
    apertura_caja = Apertura(
        {m: monto_apertura_caja
         for m in caja.monedas_permitidas})

    cajero = context.cajeros[0]

    boveda = context.boveda
    operador = context.operador_remesas
    monto_apertura_boveda = 1000
    apertura_boveda = Apertura(
        {m: monto_apertura_boveda
         for m in boveda.monedas_permitidas})

    monedas = caja.monedas_permitidas.intersection(context.boveda.monedas)
    transferencia = Transferencia(
        caja, context.boveda, {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)
    recepcionar_transferencia_action = RecepcionarTransferenciaAction(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)

    context.page.set_active_driver(driver_cajero)
    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 recibe la transferencia pero no la recepciona"):
        recibir_transferencia_action.verify_state(boveda).do(
            transferencia).success()

    with allure.step("El operador de remesas realiza un cierre total"):
        cierre_boveda = CierreTotal(boveda.balance())
        cierre_boveda_action.verify_state(boveda, cierre_boveda).do(
            operador.password, should_redirect=False)

    with allure.step("Pero no puede porque tiene operaciones pendientes"):
        cierre_boveda_action.failure("Operaciones Pendientes")

    # recepciono la operacion y cierro la boveda para que no quede bloqueada la boveda en los siguientes tests
    recibir_transferencia_action.verify_state(boveda).do(transferencia)
    recepcionar_transferencia_action.fast_forward(operador, transferencia)
    cierre_boveda = CierreTotal(boveda.balance())
    cierre_boveda_action.fast_forward(operador, boveda, cierre_boveda)
    logout_action.verify_state(operador).do().success()

    context.page.set_active_driver(driver_cajero)
    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()
Example #5
0
def test_cierre_boveda_con_depositos_pendiente_confirmacion(context):
    driver_cajero = context.driver_manager.main_driver
    caja = context.sucursal.cajas[0]
    monto_apretura_caja = 1000
    apertura_caja = Apertura(
        {m: monto_apretura_caja
         for m in caja.monedas_permitidas})
    cajero = context.cajeros[0]

    apertura_boveda = 1000
    apertura_boveda = Apertura(
        {m: apertura_boveda
         for m in context.boveda.monedas_permitidas})
    boveda = context.boveda
    operador = context.operador_remesas

    monedas = caja.monedas_permitidas.intersection(context.boveda.monedas)
    transferencia = Transferencia(
        caja, context.boveda, {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)
    recepcionar_transferencia_action = RecepcionarTransferenciaAction(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)

    context.page.set_active_driver(driver_cajero)
    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 recepciona el deposito"):
        transferencia.estado = recepcionar_transferencia_action.fast_forward(
            operador, transferencia)

    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()

    context.page.set_active_driver(driver_cajero)
    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()
Example #6
0
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()
Example #7
0
def test_solicitud_fondos_boveda_sin_fondos(context, monto_apertura_caja):
    cajero = context.cajeros[0]
    caja = context.sucursal.cajas[0]
    apertura_caja = Apertura(
        {m: monto_apertura_caja
         for m in caja.monedas_permitidas})

    driver_operador = context.driver_manager.main_driver
    operador = context.operador_remesas
    boveda = context.boveda
    monto_apertura_boveda = 0
    apertura_boveda = Apertura(
        {m: monto_apertura_boveda
         for m in boveda.monedas_permitidas})

    monedas = caja.monedas_permitidas.intersection(context.boveda.monedas)
    solicitud = SolicitudFondo(caja, boveda,
                               {m: choice([20, 50])
                                for m 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_solicitud_action = CompletarSolicitudFondosAction(context)
    recibir_solicitud_action = RecibirSolicitudFondosAction(context)
    aceptar_solicitud_action = AceptarSolicitudFondosAction(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=monto_apertura_caja > 0)
        caja.agregar_operacion(apertura_caja)

    with allure.step(
            "El cajero genera una solicitud de fondos con montos sugeridos"):
        completar_solicitud_action.verify_state(caja).do(
            solicitud, cajero.password)

    with allure.step("La solicitud se genera correctamnete"):
        solicitud.codigo = completar_solicitud_action.success()

    context.page.set_active_driver(driver_operador)
    with allure.step(
            "Boveda recibe la solicitud y la intenta aceptar pero no cuenta con fondos"
    ):
        recibir_solicitud_action.verify_state(boveda).do(solicitud).success()
        aceptar_solicitud_action.verify_state(boveda, solicitud).do(
            operador.password).failure()
        recibir_solicitud_action.success()

    context.page.set_active_driver(driver_cajero)
    with allure.step("La solicitud permanece pendiente"):
        CancelarSolicitudFondosAction(context).verify_state(caja, solicitud)

    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)
        context.boveda.agregar_operacion(cierre_boveda)
        logout_action.verify_state(operador).do().success()

    context.page.set_active_driver(driver_cajero)
    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()
Example #8
0
def test_solicitar_fondos_montos_solicitados(context):
    cajero = context.cajeros[0]
    caja = context.sucursal.cajas[0]
    monto_apertura_caja = 0
    apertura_caja = Apertura(
        {m: monto_apertura_caja
         for m in caja.monedas_permitidas})

    driver_operador = context.driver_manager.main_driver
    operador = context.operador_remesas
    boveda = context.boveda
    monto_apertura_boveda = 1000
    apertura_boveda = Apertura(
        {m: monto_apertura_boveda
         for m in boveda.monedas_permitidas})

    monedas = caja.monedas_permitidas.intersection(context.boveda.monedas)
    solicitud = SolicitudFondo(caja, boveda,
                               {m: choice([20, 50])
                                for m in monedas})
    transferencia = Transferencia(boveda, caja, solicitud.montos,
                                  solicitud.observaciones)

    login_action = LoginAction(context)
    logout_action = LogoutAction(context)
    apertura_action = AperturaOperableAction(context)
    cierre_caja_action = CierreTotalCajaAction(context)
    cierre_boveda_action = CierreOperableAction(context)
    completar_solicitud_action = CompletarSolicitudFondosAction(context)
    recibir_solicitud_action = RecibirSolicitudFondosAction(context)
    aceptar_solicitud_action = AceptarSolicitudFondosAction(context)
    confirmar_transferencia_action = ConfirmarTransferenciaAction(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)
        caja.agregar_operacion(apertura_caja)

    with allure.step(
            "El cajero genera una solicitud de fondos con montos sugeridos"):
        completar_solicitud_action.verify_state(caja).do(
            solicitud, cajero.password)

    with allure.step("La solicitud se genera correctamnete"):
        solicitud.codigo = completar_solicitud_action.success()

    context.page.set_active_driver(driver_operador)
    with allure.step(
            "Boveda recibe la solicitud y la acepta con los montos sugeridos"):
        recibir_solicitud_action.verify_state(boveda).do(solicitud).success()
        aceptar_solicitud_action.verify_state(boveda,
                                              solicitud).do(operador.password)

    with allure.step("La solicitud se confirma y se genera la transferencia"):
        transferencia.codigo = solicitud.codigo
        aceptar_solicitud_action.success(transferencia)
        boveda.agregar_operacion(transferencia)

    context.page.set_active_driver(driver_cajero)
    with allure.step(
            "El cajero recibe la transferencia y confirma con montos correctos"
    ):
        SolicitudFinalizadaAction(context).verify_state(caja).do(
            solicitud).success("Aceptada")
        transferencia.estado = confirmar_transferencia_action.fast_forward(
            cajero, transferencia)

    context.page.set_active_driver(driver_operador)
    with allure.step("la transferencia se contabiliza y ya no se muestra"):
        transferencia.estado = transferencia_finalizada_action.fast_forward(
            transferencia)
        caja.agregar_operacion(transferencia)

    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()

    context.page.set_active_driver(driver_cajero)
    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()