refs #4700 working on e2e
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Alexandre Riera 2022-11-11 15:58:11 +01:00
parent 117e2c03f5
commit c16210dd8a
10 changed files with 220 additions and 37 deletions

View File

@ -722,16 +722,23 @@ export default {
litersMax: 'vn-textfield[label="Max Liters"]',
ipt: 'vn-autocomplete[label="Origin IPT"]',
tfIpt: 'vn-autocomplete[label="Destination IPT"]',
tableIpt: 'vn-autocomplete[name="ipt"]',
tableTfIpt: 'vn-autocomplete[name="tfIpt"]',
state: 'vn-autocomplete[label="Origin Grouped State"]',
tfState: 'vn-autocomplete[label="Destination Grouped State"]',
warehouseFk: 'vn-autocomplete[label="Warehouse"]',
problems: 'vn-check[label="With problems"]',
tableButtonSearch: 'vn-button[vn-tooltip="Search"]',
moveButton: 'vn-button[vn-tooltip="Future tickets"]',
tableId: 'vn-textfield[ng-model="searchProps[\'id\']"]',
tableTfId: 'vn-textfield[ng-model="searchProps[\'ticketFuture\']"]',
acceptButton: '.vn-confirm.shown button[response="accept"]',
firstCheck: 'tbody > tr:nth-child(1) > td > vn-check',
multiCheck: 'vn-multi-check',
tableId: 'vn-textfield[name="id"]',
tableTfId: 'vn-textfield[name="ticketFuture"]',
tableLiters: 'vn-textfield[name="litersMax"]',
tableLines: 'vn-textfield[name="linesMax"]',
submit: 'vn-submit[label="Search"]',
table: 'tbody > tr:not(.empty-rows, #searchRow)',
table: 'tbody > tr:not(.empty-rows)'
},
createStateView: {
state: 'vn-autocomplete[ng-model="$ctrl.stateFk"]',

View File

@ -127,8 +127,8 @@ describe('Item regularize path', () => {
await page.waitForState('ticket.index');
});
it('should search for the ticket with id 28 once again', async() => {
await page.accessToSearchResult('28');
it('should search for the ticket with id 31 once again', async() => {
await page.accessToSearchResult('31');
await page.waitForState('ticket.card.summary');
});

View File

@ -291,7 +291,7 @@ describe('Ticket Edit sale path', () => {
it('should confirm the transfered quantity is the correct one', async() => {
const result = await page.waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
expect(result).toContain('10');
expect(result).toContain('20');
});
it('should go back to the original ticket sales section', async() => {

View File

@ -18,14 +18,69 @@ describe('Ticket Future path', () => {
const now = new Date();
const tomorrow = new Date(now.getDate() + 1);
const ticket = {
originDated: now,
futureDated: now,
linesMax: '9999',
litersMax: '9999',
warehouseFk: 'Warehouse One'
};
it('should show errors snackbar because of the required data', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.originDated, ticket.originDated);
await page.pickDate(selectors.ticketFuture.futureDated, ticket.futureDated);
await page.write(selectors.ticketFuture.linesMax, ticket.linesMax);
await page.write(selectors.ticketFuture.litersMax, ticket.litersMax);
await page.waitToClick(selectors.ticketFuture.submit);
let message = await page.waitForSnackbar();
expect(message.text).toContain('warehouseFk is a required argument');
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.originDated, ticket.originDated);
await page.pickDate(selectors.ticketFuture.futureDated, ticket.futureDated);
await page.write(selectors.ticketFuture.linesMax, ticket.linesMax);
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, ticket.warehouseFk);
await page.waitToClick(selectors.ticketFuture.submit);
message = await page.waitForSnackbar();
expect(message.text).toContain('litersMax is a required argument');
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.originDated, ticket.originDated);
await page.pickDate(selectors.ticketFuture.futureDated, ticket.futureDated);
await page.write(selectors.ticketFuture.litersMax, ticket.litersMax);
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, ticket.warehouseFk);
await page.waitToClick(selectors.ticketFuture.submit);
message = await page.waitForSnackbar();
expect(message.text).toContain('linesMax is a required argument');
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.originDated, ticket.originDated);
await page.write(selectors.ticketFuture.linesMax, ticket.linesMax);
await page.write(selectors.ticketFuture.litersMax, ticket.litersMax);
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, ticket.warehouseFk);
await page.waitToClick(selectors.ticketFuture.submit);
message = await page.waitForSnackbar();
expect(message.text).toContain('futureDated is a required argument');
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.futureDated, ticket.futureDated);
await page.write(selectors.ticketFuture.linesMax, ticket.linesMax);
await page.write(selectors.ticketFuture.litersMax, ticket.litersMax);
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, ticket.warehouseFk);
await page.waitToClick(selectors.ticketFuture.submit);
message = await page.waitForSnackbar();
expect(message.text).toContain('originDated is a required argument');
});
it('should search with the required data', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.pickDate(selectors.ticketFuture.originDated, now);
await page.pickDate(selectors.ticketFuture.futureDated, now);
await page.waitToClick(selectors.ticketFuture.linesMax);
await page.write(selectors.ticketFuture.linesMax, '9999');
await page.write(selectors.ticketFuture.litersMax, '9999');
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, 'Warehouse One');
await page.pickDate(selectors.ticketFuture.originDated, ticket.originDated);
await page.pickDate(selectors.ticketFuture.futureDated, ticket.futureDated);
await page.write(selectors.ticketFuture.linesMax, ticket.linesMax);
await page.write(selectors.ticketFuture.litersMax, ticket.litersMax);
await page.autocompleteSearch(selectors.ticketFuture.warehouseFk, ticket.warehouseFk);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
@ -61,7 +116,14 @@ describe('Ticket Future path', () => {
it('should search with the origin IPT', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.shipped);
await page.clearInput(selectors.ticketFuture.tfShipped);
await page.clearInput(selectors.ticketFuture.ipt);
await page.clearInput(selectors.ticketFuture.tfIpt);
await page.clearInput(selectors.ticketFuture.state);
await page.clearInput(selectors.ticketFuture.tfState);
await page.autocompleteSearch(selectors.ticketFuture.ipt, 'Horizontal');
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 0);
@ -69,7 +131,14 @@ describe('Ticket Future path', () => {
it('should search with the destination IPT', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.shipped);
await page.clearInput(selectors.ticketFuture.tfShipped);
await page.clearInput(selectors.ticketFuture.ipt);
await page.clearInput(selectors.ticketFuture.tfIpt);
await page.clearInput(selectors.ticketFuture.state);
await page.clearInput(selectors.ticketFuture.tfState);
await page.autocompleteSearch(selectors.ticketFuture.tfIpt, 'Horizontal');
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 0);
@ -77,7 +146,14 @@ describe('Ticket Future path', () => {
it('should search with the origin grouped state', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.shipped);
await page.clearInput(selectors.ticketFuture.tfShipped);
await page.clearInput(selectors.ticketFuture.ipt);
await page.clearInput(selectors.ticketFuture.tfIpt);
await page.clearInput(selectors.ticketFuture.state);
await page.clearInput(selectors.ticketFuture.tfState);
await page.autocompleteSearch(selectors.ticketFuture.state, 'Free');
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 3);
@ -85,7 +161,14 @@ describe('Ticket Future path', () => {
it('should search with the destination grouped state', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.shipped);
await page.clearInput(selectors.ticketFuture.tfShipped);
await page.clearInput(selectors.ticketFuture.ipt);
await page.clearInput(selectors.ticketFuture.tfIpt);
await page.clearInput(selectors.ticketFuture.state);
await page.clearInput(selectors.ticketFuture.tfState);
await page.autocompleteSearch(selectors.ticketFuture.tfState, 'Free');
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 0);
@ -93,7 +176,14 @@ describe('Ticket Future path', () => {
it('should search with problems selected', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.shipped);
await page.clearInput(selectors.ticketFuture.tfShipped);
await page.clearInput(selectors.ticketFuture.ipt);
await page.clearInput(selectors.ticketFuture.tfIpt);
await page.clearInput(selectors.ticketFuture.state);
await page.clearInput(selectors.ticketFuture.tfState);
await page.waitToClick(selectors.ticketFuture.problems);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
@ -104,23 +194,108 @@ describe('Ticket Future path', () => {
await page.waitToClick(selectors.ticketFuture.problems);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 0);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.clearInput(selectors.ticketFuture.problems);
await page.waitToClick(selectors.ticketFuture.submit);
});
it('should search with an ID Origin', async () => {
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.problems);
await page.waitToClick(selectors.ticketFuture.submit);
it('should search in smart-table with an ID Origin', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableId, "13");
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 2);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should search with an ID Destination', async () => {
await page.clearInput(selectors.ticketFuture.tableId);
it('should search in smart-table with an ID Destination', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableTfId, "12");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 5);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should search in smart-table with an IPT Origin', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.autocompleteSearch(selectors.ticketFuture.tableIpt, 'Vertical');
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should search in smart-table with an IPT Destination', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.autocompleteSearch(selectors.ticketFuture.tableTfIpt, 'Vertical');
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should search in smart-table with especified Lines', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableLines, "0");
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableLines, "1");
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 5);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should search in smart-table with especified Liters', async () => {
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableLiters, "0");
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 1);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.write(selectors.ticketFuture.tableLiters, "28");
await page.keyboard.press("Enter");
await page.waitForNumberOfElements(selectors.ticketFuture.table, 5);
await page.waitToClick(selectors.ticketFuture.tableButtonSearch);
await page.waitToClick(selectors.ticketFuture.openAdvancedSearchButton);
await page.waitToClick(selectors.ticketFuture.submit);
await page.waitForNumberOfElements(selectors.ticketFuture.table, 4);
});
it('should check the second ticket and move to the future', async () => {
await page.waitToClick(selectors.ticketFuture.multiCheck);
await page.waitToClick(selectors.ticketFuture.firstCheck);
await page.waitToClick(selectors.ticketFuture.moveButton);
await page.waitToClick(selectors.ticketFuture.acceptButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Tickets moved successfully!');
});
// const message = await page.waitForSnackbar();
});

View File

@ -134,6 +134,7 @@
"Password does not meet requirements": "Password does not meet requirements",
"You don't have privileges to change the zone": "You don't have privileges to change the zone or for these parameters there are more than one shipping options, talk to agencies",
"Not enough privileges to edit a client": "Not enough privileges to edit a client",
"You don't have grant privilege": "You don't have grant privilege",
"You don't own the role and you can't assign it to another user": "You don't own the role and you can't assign it to another user"
}
"You don't have grant privilege": "You don't have grant privilege",
"You don't own the role and you can't assign it to another user": "You don't own the role and you can't assign it to another user",
"MOVE_TICKET_CONFIRMATION": "MOVE_TICKET_CONFIRMATION"
}

View File

@ -36,8 +36,8 @@ module.exports = Self => {
myOptions.transaction = tx;
}
for (let ticket of tickets) {
try {
try {
for (let ticket of tickets) {
const fullPath = `${origin}/#!/ticket/${ticket.ticketFuture}/summary`;
const message = $t('MOVE_TICKET_CONFIRMATION', {
originDated: new Date(ticket.originETD).toLocaleDateString('es-ES'),
@ -46,18 +46,17 @@ module.exports = Self => {
tfId: ticket.ticketFuture,
fullPath
});
if(!ticket.id || !ticket.ticketFuture) continue;
await models.Sale.updateAll({ticketFk: ticket.id}, {ticketFk: ticket.ticketFuture}, myOptions);
if (!ticket.id || !ticket.ticketFuture) continue;
await models.Sale.updateAll({ ticketFk: ticket.id }, { ticketFk: ticket.ticketFuture }, myOptions);
await models.Ticket.setDeleted(ctx, ticket.id, myOptions);
await models.Chat.sendCheckingPresence(ctx, ticket.workerFk, message);
if (tx)
{
await tx.commit();
}
} catch (e) {
if (tx) await tx.rollback();
throw e;
};
if (tx) {
await tx.commit();
}
};
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};

View File

@ -22,7 +22,7 @@ describe('Component vnTicketFuture', () => {
}, {
id: 2,
checked: true,
state: "FREE"
state: "Libre"
}];
}));

View File

@ -3,3 +3,4 @@ FREE: Free
DELIVERED: Delivered
ON_PREPARATION: On preparation
PACKED: Packed
Success: Tickets moved successfully!