Skip to content

Prueba: Terceros – Editar Terceros

Objetivo

Verificar que el sistema permita editar correctamente los datos del último tercero registrado en cada una de las categorías disponibles (clientes, proveedores, empleados y otros). La prueba busca garantizar que el formulario de edición funcione correctamente, actualice los datos en el sistema y cierre el modal sin errores.


Precondiciones

  • Usuario autenticado mediante el comando cy.login().
  • Acceso al dashboard del sistema (/dashboard).
  • Debe existir al menos un registro previo en cada categoría de terceros.
  • Los modales de edición deben estar correctamente configurados y accesibles desde cada pestaña.

Pasos Generales

  1. Ingresar al sistema y acceder al módulo Terceros.
  2. Seleccionar una de las pestañas correspondientes:

  3. Clientes

  4. Proveedores
  5. Empleados
  6. Otros

  7. Localizar la última fila registrada en la tabla de la categoría seleccionada.correspondientes al escenario.

  8. Hacer clic en el botón Editar de ese registro.
  9. Modificar los campos del formulario
  10. Hacer clic en el botón Guardar cambios.
  11. Verificar que el modal se cierre correctamente.
  12. Repetir el proceso para cada categoría.

Resultado Esperado

  • Se abre correctamente el modal de edición correspondiente al registro seleccionado.
  • Todos los campos del formulario son editables y permiten ingresar nuevos datos.
  • Al guardar los cambios, el modal se cierra automáticamente.
  • No se presentan errores de validación ni alertas inesperadas.
  • Los cambios realizados se guardan exitosamente en el sistema

Explicación Detallada del Código

Definición de Escenarios de Prueba

const escenarios = [
  {
    categoria: "clientes",
    tipoPersona: "natural",
    tipoIdentificacion: "Cédula de ciudadania",
    numeroIdentificacion: "111222331",
    nombre: "ZCliente Editado 1",
    correo: "cliente1@example.com",
    contacto: "3000000001",
    direccion: "Calle Editada #1-1",
    departamento: "Sucre",
    ciudad: "Sincelejo",
  },
  {
    categoria: "proveedores",
    tipoPersona: "juridica",
    tipoIdentificacion: "NIT",
    numeroIdentificacion: "900123451",
    nombre: "ZProveedor Editado 1",
    correo: "proveedor1@example.com",
    contacto: "3000000002",
    direccion: "Carrera Editada #2-2",
    departamento: "Bolívar",
    ciudad: "Cartagena",
  },
  {
    categoria: "empleados",
    tipoPersona: "natural",
    tipoIdentificacion: "Cédula de ciudadania",
    numeroIdentificacion: "9876543211",
    nombre: "ZEmpleado Editado 1",
    correo: "empleado1@example.com",
    contacto: "3000000003",
    direccion: "Calle Editada #3-3",
    departamento: "Córdoba",
    ciudad: "Montería",
  },
  {
    categoria: "otros",
    tipoPersona: "juridica",
    tipoIdentificacion: "NIT",
    numeroIdentificacion: "900987651",
    nombre: "ZOtro Editado 1",
    correo: "otro1@example.com",
    contacto: "3000000004",
    direccion: "Av. Editada #4-4",
    departamento: "Atlántico",
    ciudad: "Barranquilla",
  },
];

Explicación

  • Se definen los cuatro escenarios para las distintas categorías del módulo de terceros.
  • Cada objeto contiene los nuevos datos que reemplazarán los valores previos.
  • El prefijo “Z” en los nombres permite identificar fácilmente los registros modificados.

Iteración sobre los Escenarios

escenarios.forEach((tercero) => {
  it(`Debe editar el último ${tercero.categoria} agregado`, () => {
    cy.visit("/terceros");
    cy.get(`#${tercero.categoria}-tab`).click();
  });
});

Explicación

  • Se recorre el arreglo escenarios y se genera un test dinámico para cada tipo de tercero.
  • Se visita el módulo de terceros y se hace clic en la pestaña correspondiente.
  • El nombre del test indica qué tipo de tercero se está editando, lo cual facilita el seguimiento en los reportes de ejecución.

Apertura del Modal de edicion

cy.get(`#${tercero.categoria}`)
  .find('button[data-target^="#editarTerceroModal"]')
  .last()
  .click();

Explicación

  • Se busca el botón Editar dentro de la tabla de la categoría seleccionada.
  • .last() garantiza que se edite el último tercero agregado, que es el objetivo de esta prueba.
  • Al hacer clic, se abre el modal correspondiente al registro.

Edicion de campos del Tercero

cy.get('div[id*="editarTerceroModal"]:visible').within(() => {
  cy.get('select[name="tipo_persona"]').select(tercero.tipoPersona);
  cy.get('select[name="tipo_iden"]').select(tercero.tipoIdentificacion);
  cy.get('input[name="num_iden"]').clear().type(tercero.numeroIdentificacion);
  cy.get('input[name="nombre"]').clear().type(tercero.nombre);
  cy.get('input[name="correo"]').clear().type(tercero.correo);
  cy.get('input[name="num_contact"]').clear().type(tercero.contacto);
  cy.get('input[name="direccion"]').clear().type(tercero.direccion);
  cy.get('select[name="departamento"]').select(tercero.departamento);
  cy.get('select[name="ciudad"]').select(tercero.ciudad);
  cy.get("div.modal-footer button.btn.btn-primary").click();
});

Explicación

  • El uso de .within() restringe las acciones al modal visible, evitando conflictos con otros elementos.
  • Todos los campos del formulario se limpian y se rellenan con la información nueva definida en el escenario.
  • Finalmente, se guarda el registro haciendo clic en el botón Guardar cambios.

Validar Cierre del Modal

cy.get('div[id*="editarTerceroModal"]:visible').should("not.exist");

Explicación

  • Se valida que el modal ya no esté visible, lo que confirma que la acción de guardar fue procesada exitosamente.

Resultados de la ejecución de la prueba

Escenario Categoría Tipo de Persona Tipo de Identificación Nombre Editado Resultado
1 Clientes Natural Cédula de ciudadanía ZCliente Editado 1 PASS
2 Proveedores Jurídica NIT ZProveedor Editado 1 PASS
3 Empleados Natural Cédula de ciudadanía ZEmpleado Editado 1 PASS
4 Otros Jurídica NIT ZOtro Editado 1 PASS