From fb418edc7bfcb90edb845b97c626d1d7ffc7adf5 Mon Sep 17 00:00:00 2001 From: carlosjr Date: Mon, 15 Mar 2021 11:32:17 +0100 Subject: [PATCH 1/6] backend modifications for route tickets --- db/dump/fixtures.sql | 7 +++ .../back/methods/route/getSuggestedTickets.js | 44 +++++++++++++++++++ .../route/specs/getSuggestedTickets.spec.js | 14 ++++++ modules/route/back/models/route.js | 1 + modules/route/front/tickets/index.html | 9 ++-- modules/route/front/tickets/index.js | 28 ------------ modules/zone/back/model-config.json | 3 ++ modules/zone/back/models/zoneAgencyMode.json | 29 ++++++++++++ 8 files changed, 103 insertions(+), 32 deletions(-) create mode 100644 modules/route/back/methods/route/getSuggestedTickets.js create mode 100644 modules/route/back/methods/route/specs/getSuggestedTickets.spec.js create mode 100644 modules/zone/back/models/zoneAgencyMode.json diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index d38bc89d88..bd9e595657 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2257,3 +2257,10 @@ INSERT INTO `vn`.`ticketRecalc`(`ticketFk`) SELECT `id` FROM `vn`.`ticket`; CALL `vn`.`ticket_doRecalc`(); + +INSERT INTO `vn`.`zoneAgencyMode`(`id`, `agencyModeFk`, `zoneFk`) + VALUES + (1, 1, 1), + (2, 1, 2), + (3, 6, 5), + (4, 7, 1); \ No newline at end of file diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js new file mode 100644 index 0000000000..fc637c60f6 --- /dev/null +++ b/modules/route/back/methods/route/getSuggestedTickets.js @@ -0,0 +1,44 @@ +module.exports = Self => { + Self.remoteMethod('getSuggestedTickets', { + description: 'Returns an array of suggested tickets for the given route', + accessType: 'READ', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The route id', + http: {source: 'path'} + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/:id/getSuggestedTickets`, + verb: 'GET' + } + }); + + Self.getSuggestedTickets = async id => { + const route = await Self.app.models.Route.findById(id); + + const zoneAgencyModes = await Self.app.models.ZoneAgencyMode.find({ + where: { + agencyModeFk: route.agencyModeFk + } + }); + + const zoneIds = []; + for (let zoneAgencyMode of zoneAgencyModes) + zoneIds.push(zoneAgencyMode.zoneFk); + + const tickets = await Self.app.models.Ticket.find({ + where: { + ageconyModeFk: route.agencyModeFk, + zoneFk: {inq: zoneIds} + } + }); + + return tickets; + }; +}; diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js new file mode 100644 index 0000000000..56fb56a627 --- /dev/null +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -0,0 +1,14 @@ +const app = require('vn-loopback/server/server'); + +describe('route getSuggestedTickets()', () => { + it('should return an array of suggested tickets', async() => { + const result = await app.models.Route.getSuggestedTickets(1); + + const length = result.length; + const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; + + expect(result.length).toEqual(4); + expect(anyResult.zoneFk).toEqual(1); + expect(anyResult.agencyModeFk).toEqual(1); + }); +}); diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index 4423131bf1..1cfe0927e0 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -7,6 +7,7 @@ module.exports = Self => { require('../methods/route/getDeliveryPoint')(Self); require('../methods/route/insertTicket')(Self); require('../methods/route/clone')(Self); + require('../methods/route/getSuggestedTickets')(Self); Self.validate('kmStart', validateDistance, { message: 'Distance must be lesser than 1000' diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html index 7e03a39812..725acea25e 100644 --- a/modules/route/front/tickets/index.html +++ b/modules/route/front/tickets/index.html @@ -110,11 +110,12 @@ question="Delete ticket from route?" on-accept="$ctrl.removeTicketFromRoute()"> - + url="Routes/{{$ctrl.$params.id}}/getSuggestedTickets" + order="priority ASC" + data="$ctrl.possibleTickets" + auto-load="true"> { return tag.priority; diff --git a/modules/zone/back/model-config.json b/modules/zone/back/model-config.json index 05da8b2c32..ee555f3f4f 100644 --- a/modules/zone/back/model-config.json +++ b/modules/zone/back/model-config.json @@ -11,6 +11,9 @@ "Zone": { "dataSource": "vn" }, + "ZoneAgencyMode": { + "dataSource": "vn" + }, "ZoneClosure": { "dataSource": "vn" }, diff --git a/modules/zone/back/models/zoneAgencyMode.json b/modules/zone/back/models/zoneAgencyMode.json new file mode 100644 index 0000000000..8944b0cdf6 --- /dev/null +++ b/modules/zone/back/models/zoneAgencyMode.json @@ -0,0 +1,29 @@ +{ + "name": "ZoneAgencyMode", + "base": "VnModel", + "options": { + "mysql": { + "table": "zoneAgencyMode" + } + }, + "properties": { + "id": { + "id": true, + "type": "number" + }, + "agencyModeFk": { + "type": "number" + }, + "zoneFk": { + "type": "number" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} From 117ea137c1fb645af5acc9c47784b5f839f68792 Mon Sep 17 00:00:00 2001 From: carlosjr Date: Tue, 16 Mar 2021 12:08:48 +0100 Subject: [PATCH 2/6] ticket index auto-state false for single results --- modules/ticket/front/main/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ticket/front/main/index.html b/modules/ticket/front/main/index.html index 8e9af1e128..91b7975ea5 100644 --- a/modules/ticket/front/main/index.html +++ b/modules/ticket/front/main/index.html @@ -6,6 +6,7 @@ Date: Mon, 22 Mar 2021 11:32:57 +0100 Subject: [PATCH 3/6] restored the auto state to its previous version --- modules/ticket/front/main/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ticket/front/main/index.html b/modules/ticket/front/main/index.html index 91b7975ea5..8e9af1e128 100644 --- a/modules/ticket/front/main/index.html +++ b/modules/ticket/front/main/index.html @@ -6,7 +6,6 @@ Date: Mon, 22 Mar 2021 16:13:12 +0100 Subject: [PATCH 4/6] tickets already in route are no longer shown + tests --- .../back/methods/route/getSuggestedTickets.js | 29 ++++++++-- .../route/specs/getSuggestedTickets.spec.js | 20 ++++++- modules/route/front/tickets/index.js | 24 ++++++-- modules/route/front/tickets/index.spec.js | 57 ++++--------------- 4 files changed, 72 insertions(+), 58 deletions(-) diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js index fc637c60f6..339c8d8261 100644 --- a/modules/route/back/methods/route/getSuggestedTickets.js +++ b/modules/route/back/methods/route/getSuggestedTickets.js @@ -20,6 +20,12 @@ module.exports = Self => { }); Self.getSuggestedTickets = async id => { + const ticketsInRoute = await Self.app.models.Ticket.find({ + where: {routeFk: id}, + fields: ['id'] + }); + const idsToExclude = ticketsInRoute.map(ticket => ticket.id); + const route = await Self.app.models.Route.findById(id); const zoneAgencyModes = await Self.app.models.ZoneAgencyMode.find({ @@ -32,11 +38,26 @@ module.exports = Self => { for (let zoneAgencyMode of zoneAgencyModes) zoneIds.push(zoneAgencyMode.zoneFk); - const tickets = await Self.app.models.Ticket.find({ + let tickets = await Self.app.models.Ticket.find({ where: { - ageconyModeFk: route.agencyModeFk, - zoneFk: {inq: zoneIds} - } + agencyModeFk: route.agencyModeFk, + zoneFk: {inq: zoneIds}, + id: {nin: idsToExclude} + }, + include: [ + { + relation: 'warehouse', + scope: { + fields: ['id', 'name'] + } + }, + { + relation: 'address', + scope: { + fields: ['id', 'street', 'postalCode', 'city'], + } + }, + ] }); return tickets; diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index 56fb56a627..e73cfebac0 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -1,14 +1,30 @@ const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); describe('route getSuggestedTickets()', () => { it('should return an array of suggested tickets', async() => { - const result = await app.models.Route.getSuggestedTickets(1); + const activeCtx = { + accessToken: {userId: 19}, + headers: {origin: 'http://localhost'} + }; + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + + const routeID = 1; + const ticketInRoute = await app.models.Ticket.findOne({where: {routeFk: routeID}}); + + await ticketInRoute.updateAttribute('routeFk', null); + + const result = await app.models.Route.getSuggestedTickets(routeID); const length = result.length; const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; - expect(result.length).toEqual(4); + expect(result.length).toEqual(1); expect(anyResult.zoneFk).toEqual(1); expect(anyResult.agencyModeFk).toEqual(1); + + await ticketInRoute.updateAttribute('routeFk', routeID); }); }); diff --git a/modules/route/front/tickets/index.js b/modules/route/front/tickets/index.js index f1103e5176..8658318416 100644 --- a/modules/route/front/tickets/index.js +++ b/modules/route/front/tickets/index.js @@ -106,14 +106,26 @@ class Controller extends Section { setTicketsRoute() { let tickets = this.getSelectedItems(this.possibleTickets); if (tickets.length === 0) return; - for (let i = 0; i < tickets.length; i++) { - delete tickets[i].checked; - tickets[i].routeFk = this.route.id; + + const updates = []; + + for (let ticket of tickets) { + delete ticket.checked; + const update = { + where: {id: ticket.id}, + data: {routeFk: this.route.id} + }; + + updates.push(update); } - return this.$.possibleTicketsModel.save().then(() => { - this.$.model.data = this.$.model.data.concat(tickets); - }); + const data = {creates: [], updates: updates, deletes: []}; + + return this.$http.post(`Tickets/crud`, data) + .then(() => { + this.$.model.data = this.$.model.data.concat(tickets); + this.vnApp.showSuccess(this.$t('Data saved!')); + }); } onDrop($event) { diff --git a/modules/route/front/tickets/index.spec.js b/modules/route/front/tickets/index.spec.js index 8a8f094896..77618e2e79 100644 --- a/modules/route/front/tickets/index.spec.js +++ b/modules/route/front/tickets/index.spec.js @@ -37,42 +37,6 @@ describe('Route', () => { }); }); - describe('buildPossibleTicketsFilter()', () => { - it('should build the possible tickets filter', () => { - let expectedFilter = { - include: [ - { - relation: 'warehouse', - scope: { - fields: ['name'] - } - }, { - relation: 'address' - } - ], - where: { - landed: { - between: [ - jasmine.any(Date), - jasmine.any(Date) - ] - }, - routeFk: null, - zoneFk: 67 - } - }; - controller.route = { - finished: new Date(), - routeFk: null, - zoneFk: 67 - }; - - controller.buildPossibleTicketsFilter(); - - expect(controller.possibleTicketsFilter).toEqual(expectedFilter); - }); - }); - describe('getHighestPriority()', () => { it('should return the highest value found in priorities plus 1', () => { controller.$.model = {data: [ @@ -228,13 +192,13 @@ describe('Route', () => { }); describe('setTicketsRoute()', () => { - it('should perform a POST query to add tickets to the route', done => { - controller.$.possibleTicketsModel = {save: () => {}}; - jest.spyOn(controller.$.possibleTicketsModel, 'save').mockReturnValue(Promise.resolve()); + it('should perform a POST query to add tickets to the route', () => { controller.$.model = {data: [ {id: 1, checked: false} ]}; + const existingTicket = controller.$.model.data[0]; + controller.route = {id: 111}; controller.possibleTickets = [ @@ -245,15 +209,16 @@ describe('Route', () => { ]; let expectedResult = [ - {checked: false, id: 1}, - {id: 3, routeFk: 111}, - {id: 5, routeFk: 111} + existingTicket, + {id: 3}, + {id: 5} ]; - controller.setTicketsRoute().then(() => { - expect(controller.$.model.data).toEqual(expectedResult); - done(); - }).catch(done.fail); + $httpBackend.expectPOST(`Tickets/crud`).respond(); + controller.setTicketsRoute(); + $httpBackend.flush(); + + expect(controller.$.model.data).toEqual(expectedResult); }); }); From a78a73486ac8b33b68090b46a59ab93ffa2896aa Mon Sep 17 00:00:00 2001 From: carlosjr Date: Tue, 23 Mar 2021 13:19:11 +0100 Subject: [PATCH 5/6] updated routes fixtures and fixed tests --- db/dump/fixtures.sql | 14 ++++++------- .../back/methods/route/getSuggestedTickets.js | 9 ++++++++- .../route/specs/getSuggestedTickets.spec.js | 2 +- .../methods/route/specs/insertTicket.spec.js | 20 ++++++------------- modules/route/front/tickets/index.html | 4 +--- 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index bd9e595657..0492ee9805 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -564,13 +564,13 @@ INSERT INTO `vn`.`zoneConfig` (`scope`) VALUES ('1'); INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`) VALUES - (1, '1899-12-30 12:15:00', 56, CURDATE(), 1, 1, 'first route', 1.8, 10, CURDATE(), CURDATE(), 1), - (2, '1899-12-30 13:20:00', 56, CURDATE(), 1, 2, 'second route', 0.2, 20, CURDATE(), CURDATE(), 9), - (3, '1899-12-30 14:30:00', 56, CURDATE(), 2, 3, 'third route', 0.5, 30, CURDATE(), CURDATE(), 10), - (4, '1899-12-30 15:45:00', 56, CURDATE(), 3, 4, 'fourth route', 0, 40, CURDATE(), CURDATE(), 12), - (5, '1899-12-30 16:00:00', 56, CURDATE(), 4, 5, 'fifth route', 0.1, 50, CURDATE(), CURDATE(), 13), - (6, NULL, 57, CURDATE(), 5, 7, 'sixth route', 1.7, 60, CURDATE(), CURDATE(), 3), - (7, NULL, 57, CURDATE(), 6, 8, 'seventh route', 0, 70, CURDATE(), CURDATE(), 5); + (1, '1899-12-30 12:15:00', 56, CURDATE(), 1, 1, 'first route', 1.8, 10, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1), + (2, '1899-12-30 13:20:00', 56, CURDATE(), 1, 2, 'second route', 0.2, 20, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 9), + (3, '1899-12-30 14:30:00', 56, CURDATE(), 2, 3, 'third route', 0.5, 30, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 10), + (4, '1899-12-30 15:45:00', 56, CURDATE(), 3, 4, 'fourth route', 0, 40, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 12), + (5, '1899-12-30 16:00:00', 56, CURDATE(), 4, 5, 'fifth route', 0.1, 50, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 13), + (6, NULL, 57, CURDATE(), 5, 7, 'sixth route', 1.7, 60, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 3), + (7, NULL, 57, CURDATE(), 6, 8, 'seventh route', 0, 70, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 5); INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`) VALUES diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js index 339c8d8261..d988555f3a 100644 --- a/modules/route/back/methods/route/getSuggestedTickets.js +++ b/modules/route/back/methods/route/getSuggestedTickets.js @@ -38,11 +38,18 @@ module.exports = Self => { for (let zoneAgencyMode of zoneAgencyModes) zoneIds.push(zoneAgencyMode.zoneFk); + const minDate = new Date(route.finished); + minDate.setHours(0, 0, 0, 0); + + const maxDate = new Date(route.finished); + maxDate.setHours(23, 59, 59, 59); + let tickets = await Self.app.models.Ticket.find({ where: { agencyModeFk: route.agencyModeFk, zoneFk: {inq: zoneIds}, - id: {nin: idsToExclude} + id: {nin: idsToExclude}, + landed: {between: [minDate, maxDate]} }, include: [ { diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index e73cfebac0..b74f3b7105 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -12,7 +12,7 @@ describe('route getSuggestedTickets()', () => { }); const routeID = 1; - const ticketInRoute = await app.models.Ticket.findOne({where: {routeFk: routeID}}); + const ticketInRoute = await app.models.Ticket.findById(12); await ticketInRoute.updateAttribute('routeFk', null); diff --git a/modules/route/back/methods/route/specs/insertTicket.spec.js b/modules/route/back/methods/route/specs/insertTicket.spec.js index 49bf04bd35..0f8c35ada2 100644 --- a/modules/route/back/methods/route/specs/insertTicket.spec.js +++ b/modules/route/back/methods/route/specs/insertTicket.spec.js @@ -4,7 +4,7 @@ const LoopBackContext = require('loopback-context'); describe('route insertTicket()', () => { const deliveryId = 56; let originalTicket; - const routeId = 2; + const routeId = 1; const activeCtx = { accessToken: {userId: deliveryId}, }; @@ -17,26 +17,18 @@ describe('route insertTicket()', () => { done(); }); - afterAll(async done => { - try { - await originalTicket.updateAttribute('routeFk', null); - } catch (error) { - console.error(error); - } - done(); - }); - it('should add the ticket to a route', async() => { - originalTicket = await app.models.Ticket.findById(14); + const ticketId = 12; + originalTicket = await app.models.Ticket.findById(ticketId); + await originalTicket.updateAttribute('routeFk', null); - const ticketId = 14; const result = await app.models.Route.insertTicket(routeId, ticketId); - expect(result.routeFk).toEqual(2); + expect(result.routeFk).toEqual(routeId); }); it('should throw and error if the ticket is not suitable for the route', async() => { - const ticketId = 23; + const ticketId = 2; let error; try { diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html index 725acea25e..784a0b78eb 100644 --- a/modules/route/front/tickets/index.html +++ b/modules/route/front/tickets/index.html @@ -113,9 +113,7 @@ + data="$ctrl.possibleTickets"> Date: Tue, 23 Mar 2021 17:19:05 +0100 Subject: [PATCH 6/6] e2e path resurrected for route tickets --- e2e/helpers/selectors.js | 3 +- e2e/paths/08-route/04_tickets.spec.js | 46 ++++++++------------------ modules/route/front/tickets/index.html | 2 +- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index d06e9c75db..25f50af939 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -790,10 +790,11 @@ export default { saveButton: 'vn-route-basic-data button[type=submit]' }, routeTickets: { - firstTicketPriority: 'vn-route-tickets vn-tr:nth-child(1) vn-textfield[ng-model="ticket.priority"]', + firstTicketPriority: 'vn-route-tickets vn-tr:nth-child(1) vn-input-number[ng-model="ticket.priority"]', firstTicketCheckbox: 'vn-route-tickets vn-tr:nth-child(1) vn-check', buscamanButton: 'vn-route-tickets vn-button[icon="icon-buscaman"]', firstTicketDeleteButton: 'vn-route-tickets vn-tr:nth-child(1) vn-icon[icon="delete"]', + anyTicket: 'vn-route-tickets vn-tbody > vn-tr', confirmButton: '.vn-confirm.shown button[response="accept"]' }, workerSummary: { diff --git a/e2e/paths/08-route/04_tickets.spec.js b/e2e/paths/08-route/04_tickets.spec.js index f1357404a7..950e11d3e1 100644 --- a/e2e/paths/08-route/04_tickets.spec.js +++ b/e2e/paths/08-route/04_tickets.spec.js @@ -1,8 +1,7 @@ import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; -// #1528 e2e claim/detail -xdescribe('Route basic Data path', () => { +describe('Route tickets path', () => { let browser; let page; @@ -10,7 +9,7 @@ xdescribe('Route basic Data path', () => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('delivery', 'route'); - await page.accessToSearchResult('3'); + await page.accessToSearchResult('2'); await page.accessToSection('route.card.tickets'); }); @@ -19,40 +18,32 @@ xdescribe('Route basic Data path', () => { }); it('should modify the first ticket priority', async() => { - await page.write(selectors.routeTickets.firstTicketPriority, '2'); + await page.clearInput(selectors.routeTickets.firstTicketPriority); + await page.type(selectors.routeTickets.firstTicketPriority, '9'); await page.keyboard.press('Enter'); const message = await page.waitForSnackbar(); expect(message.text).toContain('Data saved!'); }); - it('should confirm the buscamanButton is disabled', async() => { - const result = await page.evaluate(selector => { - return document.querySelector(selector); - }, `${selectors.routeTickets.buscamanButton} :disabled`); - - expect(result).toBeTruthy(); + it('should confirm the buscaman button is disabled', async() => { + await page.waitForSelector(`${selectors.routeTickets.buscamanButton}.disabled`); }); it('should check the first ticket checkbox and confirm the buscamanButton button is no longer disabled', async() => { - await page.waitToClick(selectors.routeTickets.firstTicketCheckbox); - const result = await page.evaluate(selector => { - return document.querySelector(selector); - }, `${selectors.routeTickets.buscamanButton} :disabled`); - - expect(result).toBeFalsy(); + await page.waitForSelector(`${selectors.routeTickets.buscamanButton}.disabled`, {visible: false}); }); it('should check the route volume on the descriptor', async() => { const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText'); - expect(result).toEqual('1.1 / 18 m³'); + expect(result).toEqual('0.2 / 50 m³'); }); it('should count how many tickets are in route', async() => { - const result = await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]'); + const result = await page.countElement(selectors.routeTickets.anyTicket); - expect(result).toEqual(11); + expect(result).toEqual(1); }); it('should delete the first ticket in route', async() => { @@ -63,23 +54,14 @@ xdescribe('Route basic Data path', () => { expect(message.text).toContain('Ticket removed from route'); }); - it('should again delete the first ticket in route', async() => { - await page.waitToClick(selectors.routeTickets.firstTicketDeleteButton); - await page.waitToClick(selectors.routeTickets.confirmButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Ticket removed from route'); - }); - it('should now count how many tickets are in route to find one less', async() => { - const result = await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]'); - - expect(result).toEqual(9); + await page.waitForNumberOfElements(selectors.routeTickets.anyTicket, 0); }); - it('should confirm the route volume on the descriptor has been updated by the changes made', async() => { + // #2862 updateVolume() route descriptor no actualiza volumen + xit('should confirm the route volume on the descriptor has been updated by the changes made', async() => { const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText'); - expect(result).toEqual('0.9 / 18 m³'); + expect(result).toEqual('0 / 50 m³'); }); }); diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html index 784a0b78eb..92a1127479 100644 --- a/modules/route/front/tickets/index.html +++ b/modules/route/front/tickets/index.html @@ -80,7 +80,7 @@