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
- Ingresar al sistema y acceder al módulo Terceros.
-
Seleccionar una de las pestañas correspondientes:
-
Clientes
- Proveedores
- Empleados
-
Otros
-
Localizar la última fila registrada en la tabla de la categoría seleccionada.correspondientes al escenario.
- Hacer clic en el botón Editar de ese registro.
- Modificar los campos del formulario
- Hacer clic en el botón Guardar cambios.
- Verificar que el modal se cierre correctamente.
- 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
escenariosy 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
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 |