diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 9b1a8a0c96..bdd4cb354a 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -552,6 +552,20 @@ export default { passwordInput: 'vn-worker-pbx vn-textfield[model="$ctrl.worker.sip.secret"] input', saveButton: 'vn-worker-pbx vn-submit[label="Save"] input' }, + routeIndex: { + addNewRouteButton: 'vn-route-index > a[ui-sref="route.create"]' + }, + createRouteView: { + workerAutocomplete: 'vn-route-create vn-autocomplete[field="$ctrl.route.workerFk"]', + createdDatePicker: 'vn-route-create vn-date-picker[model="$ctrl.route.created"] > div > input', + vehicleAutoComplete: 'vn-route-create vn-autocomplete[field="$ctrl.route.vehicleFk"]', + agencyAutoComplete: 'vn-route-create vn-autocomplete[field="$ctrl.route.agencyModeFk"]', + descriptionInput: 'vn-route-create vn-textfield[field="$ctrl.route.description"] input', + submitButton: 'vn-route-create vn-submit > input[type="submit"]' + }, + routeSummary: { + routeId: 'vn-route-summary > vn-card > div > vn-horizontal > vn-one:nth-child(1) > vn-label-value:nth-child(1) > section > span' + }, routeBasicData: { workerAutoComplete: 'vn-route-basic-data vn-autocomplete[field="$ctrl.route.workerFk"]', vehicleAutoComplete: 'vn-route-basic-data vn-autocomplete[field="$ctrl.route.vehicleFk"]', diff --git a/e2e/paths/route-module/01_create.spec.js b/e2e/paths/route-module/01_create.spec.js new file mode 100644 index 0000000000..801c0af19a --- /dev/null +++ b/e2e/paths/route-module/01_create.spec.js @@ -0,0 +1,69 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +fdescribe('Route create path', () => { + const nightmare = createNightmare(); + describe('as employee', () => { + beforeAll(() => { + nightmare + .loginAndModule('employee', 'route'); + }); + + it('should click on the add new route button and open the creation form', async() => { + const url = await nightmare + .waitToClick(selectors.routeIndex.addNewRouteButton) + .wait(selectors.createRouteView.workerAutocomplete) + .parsedUrl(); + + expect(url.hash).toEqual('#!/route/create'); + }); + + it(`should attempt to create a new route but fail since employee has no access rights`, async() => { + const result = await nightmare + .write(selectors.createRouteView.descriptionInput, 'faster faster!!') + .waitToClick(selectors.createRouteView.submitButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Access denied'); + }); + }); + + describe('as delivery', () => { + beforeAll(() => { + nightmare + .login('delivery') + .selectModule('route') + .changeLanguageToEnglish(); + }); + + it('should again click on the add new route button and open the creation form', async() => { + const url = await nightmare + .waitToClick(selectors.routeIndex.addNewRouteButton) + .wait(selectors.createRouteView.workerAutocomplete) + .parsedUrl(); + + expect(url.hash).toEqual('#!/route/create'); + }); + + it(`should create a new route`, async() => { + const result = await nightmare + .autocompleteSearch(selectors.createRouteView.workerAutocomplete, 'teamManagerNick') + .datePicker(selectors.createRouteView.createdDatePicker, 0) + .autocompleteSearch(selectors.createRouteView.vehicleAutoComplete, '4444-IMK') + .autocompleteSearch(selectors.createRouteView.agencyAutoComplete, 'Teleportation device') + .write(selectors.createRouteView.descriptionInput, 'faster faster!!') + .waitToClick(selectors.createRouteView.submitButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it(`should confirm the redirection to the created route summary`, async() => { + const url = await nightmare + .wait(selectors.routeSummary.routeId) + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + }); +}); diff --git a/e2e/paths/route-module/01_basic_data.spec.js b/e2e/paths/route-module/02_basic_data.spec.js similarity index 100% rename from e2e/paths/route-module/01_basic_data.spec.js rename to e2e/paths/route-module/02_basic_data.spec.js