import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Item', () => { describe('Summary path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .waitForLogin('employee'); }); it('should access to the items index by clicking the items button', async () => { const url = await nightmare .click(selectors.moduleAccessView.itemsSectionButton) .wait(selectors.itemsIndex.createItemButton) .parsedUrl(); expect(url.hash).toEqual('#!/item/index'); }); it('should search for the item Gem of Time', async () => { const result = await nightmare .wait(selectors.itemsIndex.searchResult) .type(selectors.itemsIndex.searchItemInput, 'Gem of Time') .click(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(result).toEqual(1); }); it(`should click on the search result summary button to open the item summary popup`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Gem of Time') .isVisible(selectors.itemSummary.basicData) .then((result) => { expect(result).toBeFalsy(); return nightmare .waitToClick(selectors.itemsIndex.searchResultPreviewButton) .isVisible(selectors.itemSummary.basicData); }); expect(result).toBeTruthy(); }); it(`should check the item summary preview shows fields from basic data`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Time') .getInnerText(selectors.itemSummary.basicData); expect(result).toContain('Name: Gem of Time'); }); it(`should check the item summary preview shows fields from tags`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.tags, 'Color: Yellow') .getInnerText(selectors.itemSummary.tags); expect(result).toContain('Color: Yellow'); }); it(`should check the item summary preview shows fields from niche`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A1') .getInnerText(selectors.itemSummary.niche); expect(result).toContain('Warehouse One: A1'); }); it(`should check the item summary preview shows fields from botanical`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: Hedera helix') .getInnerText(selectors.itemSummary.botanical); expect(result).toContain('Botanical: Hedera helix'); }); it(`should check the item summary preview shows fields from barcode`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.barcode, '1') .getInnerText(selectors.itemSummary.barcode); expect(result).toContain('1'); }); it(`should close the summary popup`, async () => { const result = await nightmare .waitToClick(selectors.itemsIndex.closeItemSummaryPreview) .isVisible(selectors.itemSummary.basicData); expect(result).toBeFalsy(); }); it('should search for the item Gem of Mind', async () => { const result = await nightmare .clearInput('body > vn-app > vn-vertical > vn-vertical > ui-view > vn-item-index > div > div > vn-card:nth-child(1) > div > vn-searchbar > form > vn-horizontal > vn-textfield > div > div > div.infix > input') .click(selectors.itemsIndex.searchButton) .type(selectors.itemsIndex.searchItemInput, 'Gem of Mind') .click(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(result).toEqual(1); }); it(`should now click on the search result summary button to open the item summary popup`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Gem of Mind') .isVisible(selectors.itemSummary.basicData) .then((result) => { expect(result).toBeFalsy(); return nightmare .waitToClick(selectors.itemsIndex.searchResultPreviewButton) .isVisible(selectors.itemSummary.basicData); }); expect(result).toBeTruthy(); }); it(`should now check the item summary preview shows fields from basic data`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Mind') .getInnerText(selectors.itemSummary.basicData); expect(result).toContain('Name: Gem of Mind'); }); it(`should now check the item summary preview shows fields from tags`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.tags, 'Color: Red') .getInnerText(selectors.itemSummary.tags); expect(result).toContain('Color: Red'); }); it(`should now check the item summary preview shows fields from niche`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A4') .getInnerText(selectors.itemSummary.niche); expect(result).toContain('Warehouse One: A4'); }); it(`should now check the item summary preview shows fields from botanical`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: -') .getInnerText(selectors.itemSummary.botanical); expect(result).toContain('Botanical: -'); }); it(`should now check the item summary preview shows fields from barcode`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.barcode, '4') .getInnerText(selectors.itemSummary.barcode); expect(result).toContain('4'); }); it(`should now close the summary popup`, async () => { const result = await nightmare .waitToClick(selectors.itemsIndex.closeItemSummaryPreview) .isVisible(selectors.itemSummary.basicData); expect(result).toBeFalsy(); }); it(`should navigate to the one of the items detailed section`, async () => { const url = await nightmare .waitToClick(selectors.itemsIndex.searchResult) .waitForURL('summary') .parsedUrl(); expect(url.hash).toContain('summary'); }); it(`should check the item summary shows fields from basic data section`, async () => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Mind') .getInnerText(selectors.itemSummary.basicData); expect(result).toContain('Name: Gem of Mind'); }); it(`should check the item summary shows fields from tags section`, async () => { const result = await nightmare .getInnerText(selectors.itemSummary.tags); expect(result).toContain('Color: Red'); }); it(`should check the item summary shows fields from niches section`, async () => { const result = await nightmare .getInnerText(selectors.itemSummary.niche); expect(result).toContain('Warehouse One: A4'); }); it(`should check the item summary shows fields from botanical section`, async () => { const result = await nightmare .getInnerText(selectors.itemSummary.botanical); expect(result).toContain('Botanical: -'); }); it(`should check the item summary shows fields from barcodes section`, async () => { const result = await nightmare .getInnerText(selectors.itemSummary.barcode); expect(result).toContain('4'); }); }); });