def test_aperturar_caja_con_bloqueo_multimoneda(context): caja = context.sucursal.cajas[0] cajero = context.cajeros[0] apertura = Apertura(dict(zip(caja.monedas_permitidas, [0, 100]))) bloqueo = Bloqueo(caja, cajero, "Apertura", logico=caja.balance(), reales=apertura.montos, diferencia=apertura.montos) desbloqueo_action = DesbloquearCajaAction(context) apertura_action = AperturaOperableAction(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 una moneda correcta y otra no" ): apertura_action.verify_state(caja).do(apertura, deberia_bloquearse=True) with allure.step("la caja se bloquea"): apertura_action.failure() 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_aperturar_caja_con_bloqueo(context, diferencia): caja = context.sucursal.cajas[0] cajero = context.cajeros[0] monto_apertura = 100 apertura1 = Apertura( {moneda: monto_apertura for moneda in caja.monedas_permitidas}) apertura2 = Apertura({ moneda: monto_apertura + diferencia for moneda in caja.monedas_permitidas }) apertura_action = AperturaOperableAction(context) bloqueo = Bloqueo( caja, cajero, "Apertura", logico=apertura1.montos, reales=apertura2.montos, diferencia={moneda: diferencia for moneda in caja.monedas_permitidas}) desbloqueo_action = DesbloquearCajaAction(context) cierre1 = CierreTotal( {moneda: monto_apertura 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") # Abro y cierro la caja para inyectarle balance apertura_action.fast_forward(cajero, caja, apertura1, desbloquear=True) caja.agregar_operacion(apertura1) cierre_action.fast_forward(cajero, caja, cierre1) caja.agregar_operacion(cierre1) with allure.step(f"Apertura la caja {caja.codigo} con montos incorrectos"): apertura_action.verify_state(caja).do(apertura2, deberia_bloquearse=True) with allure.step("la caja se bloquea"): apertura_action.failure() 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")