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