import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Item regularize path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('employee', 'item'); }); it('should edit the user local warehouse', async() => { let result = await nightmare .waitForSpinnerLoad() .waitToClick(selectors.globalItems.userMenuButton) .autocompleteSearch(selectors.globalItems.userLocalWarehouse, 'Warehouse Four') .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); it('should open the user config form to check the local settings', async() => { let userLocalWarehouse = await nightmare .waitToClick(selectors.globalItems.userMenuButton) .waitToGetProperty(`${selectors.globalItems.userLocalWarehouse} input`, 'value'); expect(userLocalWarehouse).toContain('Warehouse Four'); }); it('should search for an item', async() => { const resultCount = await nightmare .clearInput(selectors.itemsIndex.searchItemInput) .write(selectors.itemsIndex.searchItemInput, 'Ranged weapon pistol 9mm') .waitToClick(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(resultCount).toEqual(1); }); it(`should click on the search result to access to the item tax`, async() => { const url = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Ranged weapon pistol 9mm') .waitToClick(selectors.itemsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); expect(url.hash).toContain('/summary'); }); it('should open the regularize dialog and check the warehouse matches the local user settings', async() => { const result = await nightmare .waitToClick(selectors.itemDescriptor.moreMenu) .waitToClick(selectors.itemDescriptor.moreMenuRegularizeButton) .waitToGetProperty(`${selectors.itemDescriptor.regularizeWarehouseAutocomplete} input`, 'value'); expect(result).toEqual('Warehouse Four'); }); it('should regularize the item', async() => { const result = await nightmare .write(selectors.itemDescriptor.regularizeQuantityInput, 100) .autocompleteSearch(selectors.itemDescriptor.regularizeWarehouseAutocomplete, 'Warehouse One') .waitToClick(selectors.itemDescriptor.regularizeSaveButton) .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); it('should click on the Tickets button of the top bar menu', async() => { const url = await nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.ticketsButton) .wait(selectors.ticketsIndex.searchTicketInput) .parsedUrl(); expect(url.hash).toEqual('#!/ticket/index'); }); it('should now clear the user local settings', async() => { let result = await nightmare .waitToClick(selectors.globalItems.userMenuButton) .waitToClick(selectors.globalItems.userConfigFirstAutocompleteClear) .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); it('should search for the ticket with alias missing', async() => { const result = await nightmare .write(selectors.ticketsIndex.searchTicketInput, 'missing') .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); expect(result).toEqual(1); }); it(`should click on the search result to access to the ticket summary`, async() => { const url = await nightmare .waitForTextInElement(selectors.ticketsIndex.searchResult, 'Missing') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); expect(url.hash).toContain('/summary'); }); it(`should check the ticket sale quantity is showing a negative value`, async() => { const result = await nightmare .waitForTextInElement(selectors.ticketSummary.firstSaleQuantity, '-100') .waitToGetProperty(selectors.ticketSummary.firstSaleQuantity, 'innerText'); expect(result).toContain('-100'); }); it(`should check the ticket sale discount is 100%`, async() => { const result = await nightmare .waitToGetProperty(selectors.ticketSummary.firstSaleDiscount, 'innerText'); expect(result).toContain('100 %'); }); it('should now click on the Items button of the top bar menu', async() => { const url = await nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.itemsButton) .wait(selectors.itemsIndex.searchItemInput) .parsedUrl(); expect(url.hash).toEqual('#!/item/index'); }); it('should search for the item once again', async() => { const resultCount = await nightmare .clearInput(selectors.itemsIndex.searchItemInput) .write(selectors.itemsIndex.searchItemInput, 'Ranged weapon pistol 9mm') .waitToClick(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(resultCount).toEqual(1); }); it(`should click on the search result to access to the item tax`, async() => { const url = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Ranged weapon pistol 9mm') .waitToClick(selectors.itemsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); expect(url.hash).toContain('/summary'); }); it('should regularize the item once more', async() => { const result = await nightmare .waitToClick(selectors.itemDescriptor.moreMenu) .waitToClick(selectors.itemDescriptor.moreMenuRegularizeButton) .write(selectors.itemDescriptor.regularizeQuantityInput, 100) .autocompleteSearch(selectors.itemDescriptor.regularizeWarehouseAutocomplete, 'Warehouse One') .waitToClick(selectors.itemDescriptor.regularizeSaveButton) .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); it('should again click on the Tickets button of the top bar menu', async() => { const url = await nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.ticketsButton) .wait(selectors.ticketsIndex.searchTicketInput) .parsedUrl(); expect(url.hash).toEqual('#!/ticket/index'); }); it('should search for the ticket with id 25 once again', async() => { const result = await nightmare .write(selectors.ticketsIndex.searchTicketInput, 25) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); expect(result).toEqual(1); }); it(`should now click on the search result to access to the ticket summary`, async() => { const url = await nightmare .waitForTextInElement(selectors.ticketsIndex.searchResult, '25') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); expect(url.hash).toContain('/summary'); }); it(`should check the ticket contains now two sales`, async() => { const result = await nightmare .waitForTextInElement(selectors.ticketSummary.firstSaleQuantity, '-100') .countElement(selectors.ticketSummary.sale); expect(result).toEqual(2); }); });