Skip to content

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

  1. Ingresar al módulo de Inventario.
  2. Seleccionar el producto a modificar (en este caso, el segundo de la lista).
  3. Abrir el modal de ajuste de inventario.
  4. Completar los campos requeridos según el tipo de ajuste (aumenta o disminuye).
  5. Guardar los cambios realizados.
  6. 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

cy.visit("/inventario");
cy.url().should("include", "/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

cy.get('button[data-original-title="Editar inventario"]').eq(1).click();

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

cy.get("#modalAjusteInventario").should("not.be.visible");

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