From 6c29a5ed671b07813bd4e0aca55304c73990af0a Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Mon, 24 Feb 2025 12:07:22 +0100
Subject: [PATCH 1/3] fix: refs #8619 update route descriptor to handle empty
 ticket records and adjust test cases

---
 src/pages/Route/Card/RouteDescriptor.vue      |  6 +-
 .../route/routeExtendedList.spec.js           | 55 +++++++++----------
 2 files changed, 29 insertions(+), 32 deletions(-)

diff --git a/src/pages/Route/Card/RouteDescriptor.vue b/src/pages/Route/Card/RouteDescriptor.vue
index 503cd1941..28d042836 100644
--- a/src/pages/Route/Card/RouteDescriptor.vue
+++ b/src/pages/Route/Card/RouteDescriptor.vue
@@ -27,12 +27,14 @@ const getZone = async () => {
     const filter = {
         where: { routeFk: $props.id ? $props.id : route.params.id },
     };
-    const { data } = await axios.get('Tickets/findOne', {
+    const { data: [firstRecord] = [] } = await axios.get('Tickets/filter', {
         params: {
             filter: JSON.stringify(filter),
         },
     });
-    zoneId.value = data.zoneFk;
+    if (!firstRecord) return;
+
+    zoneId.value = firstRecord.zoneFk;
     const { data: zoneData } = await axios.get(`Zones/${zoneId.value}`);
     zone.value = zoneData.name;
 };
diff --git a/test/cypress/integration/route/routeExtendedList.spec.js b/test/cypress/integration/route/routeExtendedList.spec.js
index e3505ad60..96ff4528d 100644
--- a/test/cypress/integration/route/routeExtendedList.spec.js
+++ b/test/cypress/integration/route/routeExtendedList.spec.js
@@ -1,4 +1,4 @@
-describe.skip('Route extended list', () => {
+describe('Route extended list', () => {
     const getSelector = (colField) => `tr:last-child > [data-col-field="${colField}"]`;
 
     const selectors = {
@@ -32,18 +32,18 @@ describe.skip('Route extended list', () => {
 
     const originalFields = [
         { selector: selectors.worker, type: 'select', value: 'logistic' },
-        { selector: selectors.agency, type: 'select', value: 'Super-Man delivery' },
+        { selector: selectors.agency, type: 'select', value: 'inhouse pickup' },
         { selector: selectors.vehicle, type: 'select', value: '3333-IMK' },
-        { selector: selectors.date, type: 'date', value: '01/02/2024' },
+        { selector: selectors.date, type: 'date', value: '01/01/2001' },
         { selector: selectors.description, type: 'input', value: 'Test route' },
         { selector: selectors.served, type: 'checkbox', value: checkboxState.uncheck },
     ];
 
     const updateFields = [
         { selector: selectors.worker, type: 'select', value: 'salesperson' },
-        { selector: selectors.agency, type: 'select', value: 'inhouse pickup' },
+        { selector: selectors.agency, type: 'select', value: 'Super-Man delivery' },
         { selector: selectors.vehicle, type: 'select', value: '1111-IMK' },
-        { selector: selectors.date, type: 'date', value: '01/01/2001' },
+        { selector: selectors.date, type: 'date', value: '11/01/2001' },
         { selector: selectors.description, type: 'input', value: 'Description updated' },
         { selector: selectors.served, type: 'checkbox', value: checkboxState.check },
     ];
@@ -57,11 +57,11 @@ describe.skip('Route extended list', () => {
                 break;
             case 'input':
                 cy.get(selector).should('be.visible').click();
-                cy.dataCy('null_input').clear().type(`${value}{enter}`);
+                cy.dataCy('null_input').clear().type(`${value}`);
                 break;
             case 'date':
                 cy.get(selector).should('be.visible').click();
-                cy.dataCy('null_inputDate').clear().type(`${value}{enter}`);
+                cy.dataCy('null_inputDate').clear().type(`${value}`);
                 break;
             case 'checkbox':
                 cy.get(selector).should('be.visible').click().click();
@@ -76,15 +76,6 @@ describe.skip('Route extended list', () => {
         cy.typeSearchbar('{enter}');
     });
 
-    after(() => {
-        cy.visit(url);
-        cy.typeSearchbar('{enter}');
-        cy.get(selectors.lastRowSelectCheckBox).click();
-
-        cy.get(selectors.removeBtn).click();
-        cy.dataCy(selectors.confirmBtn).click();
-    });
-
     it('Should list routes', () => {
         cy.get('.q-table')
             .children()
@@ -97,9 +88,9 @@ describe.skip('Route extended list', () => {
 
         const data = {
             Worker: { val: 'logistic', type: 'select' },
-            Agency: { val: 'Super-Man delivery', type: 'select' },
+            Agency: { val: 'inhouse pickup', type: 'select' },
             Vehicle: { val: '3333-IMK', type: 'select' },
-            Date: { val: '02-01-2024', type: 'date' },
+            Date: { val: '01-01-2001', type: 'date' },
             From: { val: '01-01-2024', type: 'date' },
             To: { val: '10-01-2024', type: 'date' },
             'Km start': { val: 1000 },
@@ -129,7 +120,7 @@ describe.skip('Route extended list', () => {
     it('Should clone selected route', () => {
         cy.get(selectors.lastRowSelectCheckBox).click();
         cy.get(selectors.cloneBtn).click();
-        cy.dataCy('route.Starting date_inputDate').type('10-05-2001{enter}');
+        cy.dataCy('route.Starting date_inputDate').type('10-05-2001').click();
         cy.get('.q-card__actions > .q-btn--standard > .q-btn__content').click();
         cy.validateContent(selectors.date, '05/10/2001');
     });
@@ -143,9 +134,9 @@ describe.skip('Route extended list', () => {
         const fileName = 'download.zip';
         cy.readFile(`${downloadsFolder}/${fileName}`).should('exist');
 
-        cy.task('deleteFile', `${downloadsFolder}/${fileName}`).then((deleted) => {
-            expect(deleted).to.be.true;
-        });
+        // cy.task('deleteFile', `${downloadsFolder}/${fileName}`).then((deleted) => {
+        //     expect(deleted).to.be.true;
+        // });
     });
 
     it('Should mark as served the selected route', () => {
@@ -165,6 +156,13 @@ describe.skip('Route extended list', () => {
         cy.checkNotification(dataSaved);
     });
 
+    it('Should add ticket to route', () => {
+        cy.dataCy('tableAction-0').last().click();
+        cy.get(selectors.firstTicketsRowSelectCheckBox).click();
+        cy.get('.q-card__actions > .q-btn--standard > .q-btn__content').click();
+        cy.checkNotification(dataSaved);
+    });
+
     it('Should save changes in route', () => {
         updateFields.forEach(({ selector, type, value }) => {
             fillField(selector, type, value);
@@ -175,18 +173,15 @@ describe.skip('Route extended list', () => {
 
         cy.typeSearchbar('{enter}');
 
-        updateFields.forEach(({ selector, value }) => {
+        updateFields.forEach(({ selector, value, type }) => {
+            if (type === 'date') {
+                const [month, day, year] = value.split('/');
+                value = `${day}/${month}/${year}`;
+            }
             cy.validateContent(selector, value);
         });
     });
 
-    it('Should add ticket to route', () => {
-        cy.dataCy('tableAction-0').last().click();
-        cy.get(selectors.firstTicketsRowSelectCheckBox).click();
-        cy.get('.q-card__actions > .q-btn--standard > .q-btn__content').click();
-        cy.checkNotification(dataSaved);
-    });
-
     it('Should open summary pop-up when click summuary icon', () => {
         cy.dataCy('tableAction-1').last().click();
         cy.get('.summaryHeader > :nth-child(2').should('contain', updateFields[4].value);

From 955d2dd5c43e1b0d30ecd477e0bd8bf314752cca Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Wed, 26 Feb 2025 10:27:26 +0100
Subject: [PATCH 2/3] fix: refs #8619 handle empty ticket records in
 RouteDescriptor component

---
 src/pages/Route/Card/RouteDescriptor.vue | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/pages/Route/Card/RouteDescriptor.vue b/src/pages/Route/Card/RouteDescriptor.vue
index 28d042836..b98d99724 100644
--- a/src/pages/Route/Card/RouteDescriptor.vue
+++ b/src/pages/Route/Card/RouteDescriptor.vue
@@ -27,12 +27,14 @@ const getZone = async () => {
     const filter = {
         where: { routeFk: $props.id ? $props.id : route.params.id },
     };
-    const { data: [firstRecord] = [] } = await axios.get('Tickets/filter', {
+    const { data } = await axios.get('Tickets/filter', {
         params: {
             filter: JSON.stringify(filter),
         },
     });
-    if (!firstRecord) return;
+
+    if ( data.length == 0 ) return;
+    const firstRecord = data[0];
 
     zoneId.value = firstRecord.zoneFk;
     const { data: zoneData } = await axios.get(`Zones/${zoneId.value}`);

From b614cb2046d7e3de17497f8ffdf5cc44f7c61894 Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Thu, 27 Feb 2025 11:53:49 +0100
Subject: [PATCH 3/3] refactor: refs #8619 simplify empty data check in
 RouteDescriptor component

---
 src/pages/Route/Card/RouteDescriptor.vue                 | 2 +-
 test/cypress/integration/route/routeExtendedList.spec.js | 4 ----
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/pages/Route/Card/RouteDescriptor.vue b/src/pages/Route/Card/RouteDescriptor.vue
index b98d99724..01fb9c4ba 100644
--- a/src/pages/Route/Card/RouteDescriptor.vue
+++ b/src/pages/Route/Card/RouteDescriptor.vue
@@ -33,7 +33,7 @@ const getZone = async () => {
         },
     });
 
-    if ( data.length == 0 ) return;
+    if (!data.length) return;
     const firstRecord = data[0];
 
     zoneId.value = firstRecord.zoneFk;
diff --git a/test/cypress/integration/route/routeExtendedList.spec.js b/test/cypress/integration/route/routeExtendedList.spec.js
index 96ff4528d..da35066c3 100644
--- a/test/cypress/integration/route/routeExtendedList.spec.js
+++ b/test/cypress/integration/route/routeExtendedList.spec.js
@@ -133,10 +133,6 @@ describe('Route extended list', () => {
 
         const fileName = 'download.zip';
         cy.readFile(`${downloadsFolder}/${fileName}`).should('exist');
-
-        // cy.task('deleteFile', `${downloadsFolder}/${fileName}`).then((deleted) => {
-        //     expect(deleted).to.be.true;
-        // });
     });
 
     it('Should mark as served the selected route', () => {