import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; describe('Travel descriptor path', () => { let browser; let page; beforeAll(async() => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('buyer', 'travel'); await page.accessToSearchResult('1'); await page.waitForState('travel.card.summary'); }); afterAll(async() => { await browser.close(); }); it('should click the descriptor button to navigate to the travel index showing all travels with current agency', async() => { await page.waitToClick(selectors.travelDescriptor.filterByAgencyButton); await page.waitForState('travel.index'); const result = await page.countElement(selectors.travelIndex.anySearchResult); expect(result).toBeGreaterThanOrEqual(7); }); it('should navigate to the first search result', async() => { await page.waitToClick(selectors.travelIndex.firstSearchResult); await page.waitForState('travel.card.summary'); const state = await page.getState(); expect(state).toBe('travel.card.summary'); }); it('should be redirected to the create travel when using the clone option of the dot menu', async() => { await page.waitToClick(selectors.travelDescriptor.dotMenu); await page.waitToClick(selectors.travelDescriptor.dotMenuClone); await page.respondToDialog('accept'); await page.waitForState('travel.create'); const state = await page.getState(); expect(state).toBe('travel.create'); }); it('should edit the data to clone and then get redirected to the cloned travel basic data', async() => { await page.clearInput(selectors.travelCreate.reference); await page.write(selectors.travelCreate.reference, 'reference'); await page.autocompleteSearch(selectors.travelCreate.agency, 'entanglement'); await page.pickDate(selectors.travelCreate.shipped); await page.pickDate(selectors.travelCreate.landed); await page.autocompleteSearch(selectors.travelCreate.warehouseOut, 'warehouse one'); await page.autocompleteSearch(selectors.travelCreate.warehouseIn, 'warehouse two'); await page.waitToClick(selectors.travelCreate.saveButton); await page.waitForState('travel.card.basicData'); const message = await page.waitForSnackbar(); expect(message.text).toContain('Data saved!'); }); it('should atempt to clone the travel and its entries using the descriptor menu but receive an error', async() => { await page.waitToClick(selectors.travelDescriptor.dotMenu); await page.waitToClick(selectors.travelDescriptor.dotMenuCloneWithEntries); await page.waitToClick(selectors.travelDescriptor.acceptClonation); const message = await page.waitForSnackbar(); expect(message.text).toContain('A travel with this data already exists'); }); it('should update the landed date to a future date to enable cloneWithEntries', async() => { const nextMonth = new Date(); nextMonth.setMonth(nextMonth.getMonth() + 1); await page.pickDate(selectors.travelBasicData.deliveryDate, nextMonth); await page.waitToClick(selectors.travelBasicData.save); await page.waitForState('travel.card.basicData'); const message = await page.waitForSnackbar(); expect(message.text).toContain('Data saved!'); }); it('should navigate to the summary and then clone the travel and its entries using the descriptor menu to get redirected to the cloned travel basic data', async() => { await page.waitToClick('vn-icon[icon="preview"]'); // summary icon await page.waitForState('travel.card.summary'); await page.waitToClick(selectors.travelDescriptor.dotMenu); await page.waitToClick(selectors.travelDescriptor.dotMenuCloneWithEntries); await page.waitToClick(selectors.travelDescriptor.acceptClonation); await page.waitForState('travel.card.basicData'); }); });