From 6c29a5ed671b07813bd4e0aca55304c73990af0a Mon Sep 17 00:00:00 2001 From: jtubau 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 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 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', () => {