describe('Entry', () => { beforeEach(() => { cy.viewport(1920, 1080); cy.login('buyer'); cy.visit(`/#/entry/list`); }); it('Filter deleted entries and other fields', () => { createEntry(); cy.get('.q-notification__message').eq(0).should('have.text', 'Data created'); cy.waitForElement('[data-cy="entry-buys"]'); deleteEntry(); cy.typeSearchbar('{enter}'); cy.get('span[title="Date"]').click().click(); cy.typeSearchbar('{enter}'); cy.url().should('include', 'order'); cy.get('td[data-row-index="0"][data-col-field="landed"]').should( 'have.text', '-', ); }); it('Create entry, modify travel and add buys', () => { createEntryAndBuy(); cy.get('a[data-cy="EntryBasicData-menu-item"]').click(); selectTravel('two'); cy.saveCard(); cy.get('.q-notification__message').eq(0).should('have.text', 'Data created'); deleteEntry(); }); it('Clone entry and recalculate rates', () => { createEntry(); cy.waitForElement('[data-cy="entry-buys"]'); cy.url().then((previousUrl) => { cy.get('[data-cy="descriptor-more-opts"]').click(); cy.get('div[data-cy="clone-entry"]').should('be.visible').click(); cy.get('.q-notification__message').eq(1).should('have.text', 'Entry cloned'); cy.url() .should('not.eq', previousUrl) .then(() => { cy.waitForElement('[data-cy="entry-buys"]'); cy.get('[data-cy="descriptor-more-opts"]').click(); cy.get('div[data-cy="recalculate-rates"]').click(); cy.get('.q-notification__message') .eq(2) .should('have.text', 'Entry prices recalculated'); cy.get('[data-cy="descriptor-more-opts"]').click(); deleteEntry(); cy.log(previousUrl); cy.visit(previousUrl); cy.waitForElement('[data-cy="entry-buys"]'); deleteEntry(); }); }); }); it('Should notify when entry is lock by another user', () => { const checkLockMessage = () => { cy.get('[data-cy="entry-lock-confirm"]').should('be.visible'); cy.get('[data-cy="VnConfirm_message"] > span').should( 'contain.text', 'This entry has been locked by buyerNick', ); }; createEntry(); goToEntryBuys(); cy.get('.q-notification__message') .eq(1) .should('have.text', 'The entry has been locked successfully'); cy.login('logistic'); cy.reload(); checkLockMessage(); cy.get('[data-cy="VnConfirm_cancel"]').click(); cy.url().should('include', 'summary'); goToEntryBuys(); checkLockMessage(); cy.get('[data-cy="VnConfirm_confirm"]').click(); cy.url().should('include', 'buys'); deleteEntry(); }); it('Edit buys and use toolbar actions', () => { const COLORS = { negative: 'rgb(251, 82, 82)', positive: 'rgb(200, 228, 132)', enabled: 'rgb(255, 255, 255)', disable: 'rgb(168, 168, 168)', }; const selectCell = (field, row = 0) => cy.get(`td[data-col-field="${field}"][data-row-index="${row}"]`); const selectSpan = (field, row = 0) => selectCell(field, row).find('div > span'); const selectButton = (cySelector) => cy.get(`button[data-cy="${cySelector}"]`); const clickAndType = (field, value, row = 0) => { selectCell(field, row).click().type(`${value}{esc}`); }; const checkText = (field, expectedText, row = 0) => selectCell(field, row).should('have.text', expectedText); const checkColor = (field, expectedColor, row = 0) => selectSpan(field, row).should('have.css', 'color', expectedColor); createEntryAndBuy(); selectCell('isIgnored').click().click().type('{esc}'); checkText('isIgnored', 'close'); clickAndType('stickers', '1'); checkText('stickers', '0/01'); checkText('quantity', '1'); checkText('amount', '50.00'); clickAndType('packing', '2'); checkText('packing', '12'); checkText('weight', '12.0'); checkText('quantity', '12'); checkText('amount', '600.00'); checkColor('packing', COLORS.enabled); selectCell('groupingMode').click().click().click(); checkColor('packing', COLORS.disable); checkColor('grouping', COLORS.enabled); selectCell('buyingValue').click().clear().type('{backspace}{backspace}1'); checkText('amount', '12.00'); checkColor('minPrice', COLORS.disable); selectCell('hasMinPrice').click().click(); checkColor('minPrice', COLORS.enabled); selectCell('hasMinPrice').click(); cy.saveCard(); cy.get('span[data-cy="footer-stickers"]').should('have.text', '1'); cy.get('.q-notification__message').contains('Data saved'); selectButton('change-quantity-sign').should('be.disabled'); selectButton('check-buy-amount').should('be.disabled'); cy.get('tr.cursor-pointer > .q-table--col-auto-width > .q-checkbox').click(); selectButton('change-quantity-sign').should('be.enabled'); selectButton('check-buy-amount').should('be.enabled'); selectButton('change-quantity-sign').click(); selectButton('set-negative-quantity').click(); checkText('quantity', '-12'); selectButton('set-positive-quantity').click(); checkText('quantity', '12'); checkColor('amount', COLORS.disable); selectButton('check-buy-amount').click(); selectButton('uncheck-amount').click(); checkColor('amount', COLORS.disable); selectButton('check-amount').click(); checkColor('amount', COLORS.positive); cy.saveCard(); cy.get('span[data-cy="footer-amount"]').should( 'have.css', 'color', COLORS.positive, ); deleteEntry(); }); function goToEntryBuys() { const entryBuySelector = 'a[data-cy="EntryBuys-menu-item"]'; cy.get(entryBuySelector).should('be.visible'); cy.waitForElement('[data-cy="entry-buys"]'); cy.get(entryBuySelector).click(); } function deleteEntry() { cy.get('[data-cy="descriptor-more-opts"]').click(); cy.waitForElement('div[data-cy="delete-entry"]'); cy.get('div[data-cy="delete-entry"]').should('be.visible').click(); cy.url().should('include', 'list'); } function createEntryAndBuy() { createEntry(); createBuy(); } function createEntry() { cy.get('button[data-cy="vnTableCreateBtn"]').click(); selectTravel('one'); cy.get('button[data-cy="FormModelPopup_save"]').click(); cy.url().should('include', 'summary'); cy.get('.q-notification__message').eq(0).should('have.text', 'Data created'); } function selectTravel(warehouse) { cy.get('i[data-cy="Travel_icon"]').click(); cy.get('input[data-cy="Warehouse Out_select"]').type(warehouse); cy.get('div[role="listbox"] > div > div[role="option"]').eq(0).click(); cy.get('button[data-cy="save-filter-travel-form"]').click(); cy.get('tr').eq(1).click(); } function createBuy() { cy.get('a[data-cy="EntryBuys-menu-item"]').click(); cy.get('a[data-cy="EntryBuys-menu-item"]').click(); cy.get('button[data-cy="vnTableCreateBtn"]').click(); cy.get('input[data-cy="itemFk-create-popup"]').type('1'); cy.get('div[role="listbox"] > div > div[role="option"]').eq(0).click(); cy.get('input[data-cy="Grouping mode_select"]').should('have.value', 'packing'); cy.get('button[data-cy="FormModelPopup_save"]').click(); } });