Prueba: Productos – Modificar Inventario
Objetivo
Validar que el sistema permita modificar correctamente el inventario de un producto existente, registrando tanto aumentos como disminuciones de stock, y garantizando que los datos se guarden exitosamente y el modal se cierre automáticamente al finalizar.
Precondiciones
- Usuario autenticado mediante el comando
cy.login(). - Acceso al dashboard del sistema
(/dashboard).. - Existencia de al menos dos productos registrados en el inventario.
Pasos Generales
- Ingresar al módulo de Inventario.
- Seleccionar el producto a modificar (en este caso, el segundo de la lista).
- Abrir el modal de ajuste de inventario.
- Completar los campos requeridos según el tipo de ajuste (aumenta o disminuye).
- Guardar los cambios realizados.
- Verificar que el modal se cierre automáticamente tras guardar.
Resultado Esperado
- El sistema debe abrir el modal de ajuste sin errores.
- Los campos de responsable, tipo de ajuste, cantidad, precio y observaciones deben ser editables.
- El tipo de ajuste debe reflejar correctamente si se trata de un aumento o disminución.
- El modal debe cerrarse automáticamente tras guardar el ajuste.
- Los datos deben actualizarse en la base de inventario correspondiente.
Explicación Detallada del Código
Escenarios de prueba
const escenarios = [
{
tipoAjuste: "aumenta",
cantidad: "1",
precio: "150000",
observaciones: "Ajuste por inventario - aumento",
},
{
tipoAjuste: "disminuye",
cantidad: "1",
precio: "150000",
observaciones: "Ajuste por inventario - disminución",
},
];
Explicación
| Se definen dos escenarios que representan los posibles tipos de ajuste:
- Aumenta: simula un incremento en las existencias del producto.
- Disminuye: simula una reducción del inventario.
| Cada objeto contiene los datos necesarios para llenar el formulario dentro del modal:
- tipoAjuste → determina el tipo de movimiento.
- cantidad → número de unidades ajustadas.
- precio → valor asociado al movimiento.
- observaciones → descripción del motivo del ajuste.
Acceso al módulo de Inventario
Explicación
- Se accede directamente a la ruta
/inventario. - Se valida con
should("include")que la URL corresponda efectivamente al módulo de inventario.
Selección y apertura del modal de edición
Explicación
- Se selecciona el botón de editar inventario asociado al segundo producto de la lista (
.eq(1)). - El atributo
data-original-title="Editar inventario"identifica los botones que abren el modal correspondiente.
Edición de los datos del inventario
cy.get("#modalAjusteInventario")
.should("be.visible")
.within(() => {
const responsable = "Andres Perez";
cy.get('input[name="responsable"]').clear().type(responsable);
cy.get("select#tipoAjuste").select(escenario.tipoAjuste);
cy.get('input[name="cantidad"]').clear().type(escenario.cantidad);
cy.get('input[name="precio"]').clear().type(escenario.precio);
cy.get('textarea[name="observaciones"]')
.clear()
.type(escenario.observaciones);
// --- Guardar cambios ---
cy.get('button[type="submit"].btn.btn-primary').click();
});
Explicación
- Se asegura que el modal de ajuste esté visible antes de interactuar con él.
| Se completan los campos de forma secuencial:
- responsable → nombre de la persona que realiza el ajuste.
- tipoAjuste → selección del tipo de movimiento (aumenta/disminuye).
- cantidad y precio → valores numéricos del ajuste.
- observaciones → descripción adicional del motivo del cambio.
- Finalmente, se guarda el ajuste haciendo clic en el botón principal del modal.
Validación de cierre del modal
Explicación
- Tras guardar los cambios, se comprueba que el modal de ajuste se haya cerrado correctamente.
- La visibilidad del modal (
not.be.visible) confirma que la operación fue exitosa.
Resultados de la ejecución de la prueba
| Escenario | Tipo de Ajuste | Cantidad | Precio | Observaciones | Estado |
|---|---|---|---|---|---|
| 1 | Aumenta | 1 | 150000 | Ajuste por inventario - aumento | PASS |
| 2 | Disminuye | 1 | 150000 | Ajuste por inventario - disminución | PASS |