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()
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")
def test_aperturar_caja(context): caja = context.sucursal.cajas[0] cajero = context.cajeros[0] apertura = Apertura({moneda: 0 for moneda in caja.monedas_permitidas}) 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 montos en 0"): apertura_action.verify_state(caja).do(apertura) with allure.step("la caja se apertura"): apertura_action.success() LogoutAction(context).verify_state(cajero).do().success()
def test_aperturar_caja_con_margen(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}) apertura_action = AperturaOperableAction(context) cierre1 = CierreTotal( {moneda: monto_apertura for moneda in caja.monedas_permitidas}) apertura2 = Apertura({ moneda: monto_apertura + diferencia for moneda in caja.monedas_permitidas }) with allure.step("Un usuario ingresa como cajero"): LoginAction(context).verify_state().do(cajero, caja).success("Apertura Caja") # Las cajas se crean en 0, Abro y cierro para que tenga 100 apertura_action.fast_forward(cajero, caja, apertura1, desbloquear=True) caja.agregar_operacion(apertura1) CierreTotalCajaAction(context).fast_forward(cajero, caja, cierre1) caja.agregar_operacion(cierre1) with allure.step( f"Apertura la caja {caja.codigo} con montos dentro del margen"): apertura_action.verify_state(caja).do(apertura2) with allure.step("la caja se apertura"): apertura_action.success() LogoutAction(context).verify_state(cajero).do().success()