コード例 #1
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()
コード例 #2
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()
コード例 #3
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()
コード例 #4
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()
コード例 #5
0
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()
コード例 #6
0
def test_transferencia_caja_caja_caja_sin_saldo(context,
                                                monto_apertura_destino):
    cajero_origen = context.cajeros[0]
    caja_origen = context.sucursal.cajas[0]
    monto_apertura_origen = 1000
    apertura_origen = Apertura(
        {m: monto_apertura_origen
         for m in caja_origen.monedas_permitidas})

    caja_destino = context.sucursal.cajas[1]
    driver_destino = context.driver_manager.main_driver
    cajero_destino = context.cajeros[1]
    apertura_destino = Apertura(
        {m: monto_apertura_destino
         for m in caja_destino.monedas_permitidas})

    monedas = caja_origen.monedas_permitidas.intersection(
        caja_destino.monedas_permitidas)
    transferencia = Transferencia(
        caja_origen, caja_destino,
        {moneda: randint(1, 100)
         for moneda in monedas})

    login_action = LoginAction(context)
    logout_action = LogoutAction(context)
    apertura_action = AperturaOperableAction(context)
    completar_transferencia_action = CompletarTransferenciaAction(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_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)

    driver_origen = context.driver_manager.new_driver()
    context.page.set_active_driver(driver_origen)
    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)

    with allure.step(
            "El cajero de origen genera una transferencia de salida hacia 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"
    ):
        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.estado = transferencia_finalizada_action.fast_forward(
            transferencia)

    context.page.set_active_driver(driver_destino)
    transferencia2 = Transferencia(
        caja_destino, caja_origen, {
            moneda: monto + monto_apertura_destino + 1
            for moneda, monto in transferencia.montos.items()
        })
    with allure.step(
            "El cajero de destino intenta generar una nueva transferencia hacia origen"
    ):
        SeleccionarDestinoTransferenciaAction(context).verify_state(
            caja_destino).do(caja_origen).success()
        completar_transferencia_action.verify_state(transferencia2).do(
            cajero_destino.password)

    with allure.step("Pero no puede porque no cuenta con saldo"):
        completar_transferencia_action.failure("Sin Saldo")

    for driver, usuario in [[driver_origen, cajero_origen],
                            [driver_destino, cajero_destino]]:
        context.page.set_active_driver(driver)
        logout_action.verify_state(usuario).do().success()