Exemplo n.º 1
0
def test_cierre_total_con_diferencia(context, diferencia):
    caja = context.sucursal.cajas[0]
    cajero = context.cajeros[0]
    monto = 100

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

    cierre = CierreTotal(
        {moneda: monto + diferencia
         for moneda in caja.monedas_permitidas})
    cierre_action = CierreTotalCajaAction(context)

    with allure.step("Un usuario ingresa como cajero"):
        LoginAction(context).verify_state().do(cajero,
                                               caja).success("Apertura Caja")

    with allure.step(f"Apertura la caja {caja.codigo}"):
        apertura_action.fast_forward(cajero, caja, apertura, desbloquear=True)

    with allure.step("Realiza un cierre total con montos dentro del margen"):
        cierre_action.verify_state(caja, cierre).do(cajero.password)

    with allure.step("La caja se cierra correctamente"):
        cierre_action.success()
    LogoutAction(context).verify_state(cajero).do().success()
Exemplo n.º 2
0
def test_cierre_total_con_bloqueo(context, diferencia):
    caja = context.sucursal.cajas[0]
    cajero = context.cajeros[0]
    monto_apertura = 100

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

    cierre = CierreTotal({
        moneda: monto_apertura + diferencia
        for moneda in caja.monedas_permitidas
    })
    cierre_action = CierreTotalCajaAction(context)

    bloqueo = Bloqueo(
        caja,
        cajero,
        "Cierre total",
        logico=apertura.montos,
        reales=cierre.montos,
        diferencia={moneda: diferencia
                    for moneda in caja.monedas_permitidas})
    desbloqueo_action = DesbloquearCajaAction(context)

    with allure.step("Un usuario ingresa como cajero"):
        LoginAction(context).verify_state().do(cajero,
                                               caja).success("Apertura Caja")

    with allure.step(f"Apertura la caja {caja.codigo}"):
        apertura_action.fast_forward(cajero, caja, apertura, desbloquear=True)

    with allure.step(
            "Realiza un cierre total con montos fuera del margen de diferencia"
    ):
        cierre_action.verify_state(caja, cierre).do(cajero.password)

    with allure.step("la caja se bloquea"):
        cierre_action.failure("Bloqueo")
        LogoutAction(context).verify_state(cajero).do().success()

    with allure.step(
            "El area de operaciones puede ver correctamente la razon de bloqueo y desbloquear la caja"
    ):
        desbloqueo_action.fast_forward(context.operaciones, bloqueo,
                                       "Desbloqueo de prueba")
def test_deshabilitar_sucursal_caja_con_saldo(context):
    caja = context.sucursal.cajas[0]
    cajero = context.cajeros[0]

    login_action = LoginAction(context)
    logout_action = LogoutAction(context)
    modificar_estado_action = ModificarEstadoSucursalAction(context)

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

    cierre = CierreTotal({moneda: 100 for moneda in caja.monedas_permitidas})
    cierre_action = CierreTotalCajaAction(context)

    with allure.step("Usuario A ingresa como Cajero"):
        login_action.verify_state().do(cajero, caja).success("Apertura Caja")

    with allure.step(f"Apertura la caja {caja.codigo}"):
        apertura_action.fast_forward(cajero, caja, apertura, desbloquear=True)
        caja.agregar_operacion(apertura)

    with allure.step(f"Cierra totalmente la caja {caja.codigo}"):
        cierre_action.verify_state(caja, cierre).do(cajero.password).success()
        caja.agregar_operacion(cierre)
        logout_action.verify_state(cajero).do().success()

    with allure.step("Usuario B ingresa como administrador"):
        login_action.verify_state().do(
            context.administrador).success("Dashboard")

    with allure.step("deshabilita la sucursal"):
        modificar_estado_action.verify_state(context.sucursal)
        context.sucursal.activa = False
        modificar_estado_action.do(context.sucursal)

    with allure.step(
            f"pero no puede porque la caja {caja.codigo} tiene saldo"):
        modificar_estado_action.failure("con saldo", context.sucursal, caja)
        logout_action.verify_state(context.administrador).do().success()
Exemplo n.º 4
0
def test_cierre_total(context):
    caja = context.sucursal.cajas[0]
    cajero = context.cajeros[0]

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

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

    with allure.step("Un usuario ingresa como cajero"):
        LoginAction(context).verify_state().do(cajero,
                                               caja).success("Apertura Caja")

    with allure.step(f"Apertura la caja {caja.codigo} con montos en 0"):
        apertura_action.fast_forward(cajero, caja, apertura)

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

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

    LogoutAction(context).verify_state(cajero).do().success()