def test_deshabilitar_caja_abierta(context): driver_cajero = context.driver_manager.main_driver caja = context.sucursal.cajas[0] cajero = context.cajeros[0] editar_caja_action = EditarCajaAction(context) apertura = Apertura({moneda: 0 for moneda in caja.monedas_permitidas}) apertura_action = AperturaOperableAction(context) with allure.step("Usuario A ingresa como Cajero"): LoginAction(context).verify_state().do(cajero, caja).success("Apertura Caja") with allure.step("Apertura la caja"): apertura_action.fast_forward(cajero, caja, apertura) driver_administrador = context.driver_manager.new_driver() context.page.set_active_driver(driver_administrador) with allure.step("Usuario B ingresa como administrador"): LoginAction(context).verify_state().do(context.administrador).success("Dashboard") with allure.step("deshabilita la caja"): IrEdicionSucursalAction(context).do(context.sucursal).success() editar_caja_action.verify_state(caja) caja.desactivar() editar_caja_action.do(caja) with allure.step("pero no puede porque se encuentra abierta por Usuario B"): editar_caja_action.failure(caja, "abierta") caja.activar() GuardarSucursalAction(context).verify_state(context.sucursal) logout_action = LogoutAction(context) for driver, usuario in [[driver_administrador, context.administrador], [driver_cajero, cajero]]: context.page.set_active_driver(driver) logout_action.verify_state(usuario).do().success()
def test_deshabilitar_caja_cerrada_parcialmente(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 = CierreParcial({moneda: 0 for moneda in caja.monedas_permitidas}) cierre_action = CierreParcialCajaAction(context) login_action = LoginAction(context) editar_caja_action = EditarCajaAction(context) with allure.step("El usuario cuenta con una caja cerrada parcialmente"): apertura_action.fast_forward(cajero, caja, apertura, asignar_operador=True, redireccionar=False) caja.agregar_operacion(apertura) cierre_action.fast_forward(cajero, caja, cierre, redirect=False) caja.agregar_operacion(cierre) with allure.step("el usuario ingresa como administrador"): login_action.verify_state().do(context.administrador).success("Dashboard") with allure.step("e intenta deshabilita la caja"): IrEdicionSucursalAction(context).verify_state().do(context.sucursal).success() editar_caja_action.verify_state(caja) caja.desactivar() editar_caja_action.do(caja) with allure.step("pero no puede porque se encuentra cerrada parcialmente"): editar_caja_action.failure(caja, "abierta")
def test_deshabilitar_caja_con_saldo(context): caja = context.sucursal.cajas[0] cajero = context.cajeros[0] 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) editar_caja_action = EditarCajaAction(context) with allure.step("El usuario cuenta con una caja con saldo"): apertura_action.fast_forward(cajero, caja, apertura, desbloquear=True, asignar_operador=True, redireccionar=False) caja.agregar_operacion(apertura) cierre_action.fast_forward(cajero, caja, cierre, redirect=False) caja.agregar_operacion(cierre) with allure.step("Ingresa como administrador"): LoginAction(context).verify_state().do(context.administrador).success("Dashboard") with allure.step("Intenta deshabilita la caja"): IrEdicionSucursalAction(context).verify_state().do(context.sucursal).success() editar_caja_action.verify_state(caja) caja.desactivar() editar_caja_action.do(caja) with allure.step("Pero no puede porque su saldo es mayor a 0"): editar_caja_action.failure(caja, "con saldo") caja.activar() GuardarSucursalAction(context).verify_state(context.sucursal) LogoutAction(context).verify_state(context.administrador).do().success()
def test_deshabilitar_moneda_apertura(context): caja = context.sucursal.cajas[0] editar_caja_action = EditarCajaAction(context) with allure.step("El usuario ingresa como Administrador"): LoginAction(context).verify_state().do( context.administrador).success("Dashboard") moneda_eliminada = choice(tuple(caja.monedas_permitidas)) with allure.step(f"deshabilita la moneda {moneda_eliminada.codigo}"): IrEdicionSucursalAction(context).verify_state().do( context.sucursal).success() editar_caja_action.verify_state(caja) caja.deshabilitar_moneda_giro("Ambos", moneda_eliminada) editar_caja_action.do(caja).success() GuardarSucursalAction(context).verify_state( context.sucursal).do().success() LogoutAction(context).verify_state( context.administrador).do().success() with allure.step("El cajero asignado ingresa al sistema"): LoginAction(context).verify_state().do(context.cajeros[0], caja).success("Apertura Caja") with allure.step("Solo se muestra una moneda operable"): AperturaOperableAction(context).verify_state(caja) LogoutAction(context).verify_state(context.cajeros[0]).do().success()
def test_habilitar_caja(context): caja = context.sucursal.cajas[0] ir_edicion_sucursal_action = IrEdicionSucursalAction(context) editar_caja_action = EditarCajaAction(context) guardar_sucursal_action = GuardarSucursalAction(context) with allure.step("El usuario ingresa como Administrador"): LoginAction(context).verify_state().do(context.administrador).success("Dashboard") with allure.step("deshabilita la caja de la sucursal"): ir_edicion_sucursal_action.do(context.sucursal).success() editar_caja_action.verify_state(caja) caja.desactivar() editar_caja_action.do(caja).success() guardar_sucursal_action.verify_state(context.sucursal) with allure.step("Habilita la caja de la sucursal"): editar_caja_action.verify_state(caja) caja.activar() editar_caja_action.do(caja).success() guardar_sucursal_action.verify_state(context.sucursal) LogoutAction(context).verify_state(context.administrador).do().success()
def test_transferencia_caja_caja_sin_monedas(context): driver_origen = context.driver_manager.main_driver cajero_origen = context.cajeros[0] cajero_destino = context.cajeros[1] caja_origen = context.sucursal.cajas[0] caja_destino = context.sucursal.cajas[1] moneda_origen = 'ARS' moneda_destino = 'PEN' monedas_eliminada_origen = [ moneda for moneda in caja_origen.monedas if moneda.codigo != moneda_origen ] monedas_eliminada_destino = [ moneda for moneda in caja_destino.monedas if moneda.codigo != moneda_destino ] login_action = LoginAction(context) logout_action = LogoutAction(context) apertura_action = AperturaOperableAction(context) seleccionar_destinatario_action = SeleccionarDestinoTransferenciaAction( context) editar_caja_action = EditarCajaAction(context) with allure.step("El usuario ingresa como Administrador"): LoginAction(context).verify_state().do( context.administrador).success("Dashboard") IrEdicionSucursalAction(context).verify_state().do( context.sucursal).success() for c, monedas in [[caja_origen, monedas_eliminada_origen], [caja_destino, monedas_eliminada_destino]]: editar_caja_action.verify_state(c) [c.deshabilitar_moneda_giro("Ambos", moneda) for moneda in monedas] editar_caja_action.do(c).success() logout_action.verify_state(context.administrador).do().success() apertura_origen = Apertura({m: 0 for m in caja_origen.monedas_permitidas}) apertura_destino = Apertura( {m: 0 for m in caja_destino.monedas_permitidas}) 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) 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) caja_destino.agregar_operacion(apertura_destino) context.page.set_active_driver(driver_origen) with allure.step( "El cajero de origen intenta generar una transferencia de salida hacia caja destino" ): seleccionar_destinatario_action.verify_state(caja_origen).do( caja_destino) with allure.step( "Pero no puede porque no hay monedas en comun entre las cajas"): seleccionar_destinatario_action.failure() for driver, usuario in [[driver_destino, cajero_destino], [driver_origen, cajero_origen]]: context.page.set_active_driver(driver) logout_action.verify_state(usuario).do().success()
def test_deshabilitar_envio_recibo_giros(context): caja = context.sucursal.cajas[0] editar_caja_action = EditarCajaAction(context) operador_sin_operaciones_action = OperadorSinAccionesLoginAction(context) with allure.step("El usuario ingresa como Administrador"): LoginAction(context).do(context.administrador).success("Dashboard") with allure.step("deshabilita el envio de giros de la caja"): IrEdicionSucursalAction(context).do(context.sucursal).success() editar_caja_action.verify_state(caja) caja.envia_giros = False editar_caja_action.do(caja) with allure.step("el envio de giros se deshabilita correctamente"): editar_caja_action.success() with allure.step("deshabilita el recibo de giros de la caja"): editar_caja_action.verify_state(caja) caja.recibe_giros = False editar_caja_action.do(caja) with allure.step("el recibo de giros se deshabilita correctamente"): editar_caja_action.success() LogoutAction(context).verify_state( context.administrador).do().success() with allure.step("El cajero asignado intenta aperturar la caja"): operador_sin_operaciones_action.verify_state(caja).do( context.cajeros[0]) with allure.step( "Pero no puede porque la caja no tiene operaciones activas"): operador_sin_operaciones_action.success() LogoutAction(context).verify_state(context.cajeros[0]).do().success()