fix: ticketSale
This commit is contained in:
parent
44198ae7a7
commit
9306f88b99
|
@ -174,14 +174,18 @@ const getSaleTotal = (sale) => {
|
|||
return price - discount;
|
||||
};
|
||||
|
||||
const getRowUpdateInputEvents = (sale) => ({
|
||||
'keyup.enter': () => {
|
||||
changeQuantity(sale);
|
||||
},
|
||||
blur: () => {
|
||||
changeQuantity(sale);
|
||||
},
|
||||
});
|
||||
const getRowUpdateInputEvents = (sale) => {
|
||||
return {
|
||||
'keyup.enter': (evt) => {
|
||||
console.error(evt);
|
||||
changeQuantity(sale);
|
||||
},
|
||||
blur: (evt) => {
|
||||
console.error(evt);
|
||||
changeQuantity(sale);
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const resetChanges = async () => {
|
||||
arrayData.fetch({ append: false });
|
||||
|
@ -191,12 +195,12 @@ const resetChanges = async () => {
|
|||
const changeQuantity = async (sale) => {
|
||||
if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity)
|
||||
return;
|
||||
else sale.originalQuantity = sale.quantity;
|
||||
if (!sale.id) return addSale(sale);
|
||||
|
||||
if (await isSalePrepared(sale)) {
|
||||
await confirmUpdate(() => updateQuantity(sale));
|
||||
} else await updateQuantity(sale);
|
||||
resetChanges();
|
||||
};
|
||||
|
||||
const updateQuantity = async (sale) => {
|
||||
|
@ -205,6 +209,7 @@ const updateQuantity = async (sale) => {
|
|||
sale.isNew = false;
|
||||
await axios.post(`Sales/${id}/updateQuantity`, { quantity });
|
||||
notify('globals.dataSaved', 'positive');
|
||||
resetChanges();
|
||||
} catch (e) {
|
||||
const { quantity } = tableRef.value.CrudModelRef.originalData.find(
|
||||
(s) => s.id === sale.id,
|
||||
|
|
|
@ -1,141 +1,14 @@
|
|||
/// <reference types="cypress" />
|
||||
const firstRow = 'tbody > :nth-child(1)';
|
||||
|
||||
describe('TicketSale', () => {
|
||||
describe('Free ticket #31', () => {
|
||||
beforeEach(() => {
|
||||
cy.login('developer');
|
||||
cy.viewport(1920, 1080);
|
||||
cy.visit('/#/ticket/31/sale');
|
||||
});
|
||||
|
||||
const firstRow = 'tbody > :nth-child(1)';
|
||||
|
||||
const selectFirstRow = () => {
|
||||
cy.waitForElement(firstRow);
|
||||
cy.get(firstRow).find('.q-checkbox__inner').click();
|
||||
};
|
||||
|
||||
it('it should add item to basket', () => {
|
||||
cy.window().then((win) => {
|
||||
cy.stub(win, 'open').as('windowOpen');
|
||||
});
|
||||
cy.dataCy('ticketSaleAddToBasketBtn').should('exist');
|
||||
cy.dataCy('ticketSaleAddToBasketBtn').click();
|
||||
cy.get('@windowOpen').should('be.calledWithMatch', /\/order\/\d+\/catalog/);
|
||||
});
|
||||
|
||||
it('should send SMS', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="sendShortageSMSItem"]');
|
||||
cy.dataCy('sendShortageSMSItem').should('exist');
|
||||
cy.dataCy('sendShortageSMSItem').click();
|
||||
cy.dataCy('vnSmsDialog').should('exist');
|
||||
cy.dataCy('sendSmsBtn').click();
|
||||
cy.checkNotification('SMS sent');
|
||||
});
|
||||
|
||||
it('should recalculate price when "Recalculate price" is clicked', () => {
|
||||
cy.intercept('POST', '**/recalculatePrice').as('recalculatePrice');
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="recalculatePriceItem"]');
|
||||
cy.dataCy('recalculatePriceItem').should('exist');
|
||||
cy.dataCy('recalculatePriceItem').click();
|
||||
cy.wait('@recalculatePrice').its('response.statusCode').should('eq', 200);
|
||||
cy.checkNotification('Data saved');
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
||||
});
|
||||
|
||||
it('should update discount when "Update discount" is clicked', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="updateDiscountItem"]');
|
||||
cy.dataCy('updateDiscountItem').should('exist');
|
||||
cy.dataCy('updateDiscountItem').click();
|
||||
cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
|
||||
cy.dataCy('ticketSaleDiscountInput').find('input').focus();
|
||||
cy.dataCy('ticketSaleDiscountInput').find('input').type('10');
|
||||
cy.dataCy('saveManaBtn').click();
|
||||
cy.waitForElement('.q-notification__message');
|
||||
cy.checkNotification('Data saved');
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
||||
});
|
||||
|
||||
it('adds claim', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('createClaimItem').click();
|
||||
cy.dataCy('VnConfirm_confirm').click();
|
||||
cy.url().should('contain', 'claim/');
|
||||
// Delete created claim to avoid cluttering the database
|
||||
cy.dataCy('descriptor-more-opts').click();
|
||||
cy.dataCy('deleteClaim').click();
|
||||
cy.dataCy('VnConfirm_confirm').click();
|
||||
cy.checkNotification('Data deleted');
|
||||
});
|
||||
|
||||
it('marks row as reserved', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="markAsReservedItem"]');
|
||||
cy.dataCy('markAsReservedItem').click();
|
||||
cy.dataCy('ticketSaleReservedIcon').should('exist');
|
||||
});
|
||||
|
||||
it('unmarks row as reserved', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="unmarkAsReservedItem"]');
|
||||
cy.dataCy('unmarkAsReservedItem').click();
|
||||
cy.dataCy('ticketSaleReservedIcon').should('not.exist');
|
||||
});
|
||||
|
||||
it('refunds row with warehouse', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('ticketSaleRefundItem').click();
|
||||
cy.dataCy('ticketSaleRefundWithWarehouse').click();
|
||||
cy.checkNotification('The following refund ticket have been created');
|
||||
});
|
||||
|
||||
it('refunds row without warehouse', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('ticketSaleRefundItem').click();
|
||||
cy.dataCy('ticketSaleRefundWithoutWarehouse').click();
|
||||
cy.checkNotification('The following refund ticket have been created');
|
||||
});
|
||||
|
||||
it('transfer sale to a new ticket', () => {
|
||||
cy.visit('/#/ticket/32/sale');
|
||||
cy.get('.q-item > .q-item__label').should('have.text', ' #32');
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleTransferBtn').click();
|
||||
cy.dataCy('ticketTransferPopup').should('exist');
|
||||
cy.dataCy('ticketTransferNewTicketBtn').click();
|
||||
cy.get('.q-item > .q-item__label').should('not.have.text', ' #32');
|
||||
});
|
||||
|
||||
it('should redirect to ticket logs', () => {
|
||||
cy.get(firstRow).find('.q-btn:last').click();
|
||||
cy.url().should('match', /\/ticket\/31\/log/);
|
||||
});
|
||||
});
|
||||
describe('Ticket prepared #23', () => {
|
||||
describe('Ticket #23', () => {
|
||||
beforeEach(() => {
|
||||
cy.login('developer');
|
||||
cy.viewport(1920, 1080);
|
||||
cy.visit('/#/ticket/23/sale');
|
||||
});
|
||||
|
||||
const firstRow = 'tbody > :nth-child(1)';
|
||||
|
||||
const selectFirstRow = () => {
|
||||
cy.waitForElement(firstRow);
|
||||
cy.get(firstRow).find('.q-checkbox__inner').click();
|
||||
};
|
||||
|
||||
it('update price', () => {
|
||||
const price = Number((Math.random() * 99 + 1).toFixed(2));
|
||||
cy.waitForElement(firstRow);
|
||||
|
@ -198,8 +71,144 @@ describe('TicketSale', () => {
|
|||
.should('have.value', `${quantity}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('Ticket to add claim #24', () => {
|
||||
beforeEach(() => {
|
||||
cy.login('developer');
|
||||
cy.viewport(1920, 1080);
|
||||
cy.visit('/#/ticket/24/sale');
|
||||
});
|
||||
|
||||
it('adds claim', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('createClaimItem').click();
|
||||
cy.dataCy('VnConfirm_confirm').click();
|
||||
cy.url().should('contain', 'claim/');
|
||||
// Delete created claim to avoid cluttering the database
|
||||
cy.dataCy('descriptor-more-opts').click();
|
||||
cy.dataCy('deleteClaim').click();
|
||||
cy.dataCy('VnConfirm_confirm').click();
|
||||
});
|
||||
});
|
||||
describe('Free ticket #31', () => {
|
||||
beforeEach(() => {
|
||||
cy.login('developer');
|
||||
cy.viewport(1920, 1080);
|
||||
cy.visit('/#/ticket/31/sale');
|
||||
});
|
||||
|
||||
it('it should add item to basket', () => {
|
||||
cy.window().then((win) => {
|
||||
cy.stub(win, 'open').as('windowOpen');
|
||||
});
|
||||
cy.dataCy('ticketSaleAddToBasketBtn').should('exist');
|
||||
cy.dataCy('ticketSaleAddToBasketBtn').click();
|
||||
cy.get('@windowOpen').should('be.calledWithMatch', /\/order\/\d+\/catalog/);
|
||||
});
|
||||
|
||||
it('should send SMS', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="sendShortageSMSItem"]');
|
||||
cy.dataCy('sendShortageSMSItem').should('exist');
|
||||
cy.dataCy('sendShortageSMSItem').click();
|
||||
cy.dataCy('vnSmsDialog').should('exist');
|
||||
cy.dataCy('sendSmsBtn').click();
|
||||
cy.checkNotification('SMS sent');
|
||||
});
|
||||
|
||||
it('should recalculate price when "Recalculate price" is clicked', () => {
|
||||
cy.intercept('POST', '**/recalculatePrice').as('recalculatePrice');
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="recalculatePriceItem"]');
|
||||
cy.dataCy('recalculatePriceItem').should('exist');
|
||||
cy.dataCy('recalculatePriceItem').click();
|
||||
cy.wait('@recalculatePrice').its('response.statusCode').should('eq', 200);
|
||||
cy.checkNotification('Data saved');
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
||||
});
|
||||
|
||||
it('should update discount when "Update discount" is clicked', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="updateDiscountItem"]');
|
||||
cy.dataCy('updateDiscountItem').should('exist');
|
||||
cy.dataCy('updateDiscountItem').click();
|
||||
cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
|
||||
cy.dataCy('ticketSaleDiscountInput').find('input').focus();
|
||||
cy.dataCy('ticketSaleDiscountInput').find('input').type('10');
|
||||
cy.dataCy('saveManaBtn').click();
|
||||
cy.waitForElement('.q-notification__message');
|
||||
cy.checkNotification('Data saved');
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
||||
});
|
||||
|
||||
it('adds claim', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('createClaimItem').click();
|
||||
cy.dataCy('VnConfirm_confirm').click();
|
||||
cy.checkNotification('Future ticket date not allowed');
|
||||
});
|
||||
|
||||
it('marks row as reserved', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="markAsReservedItem"]');
|
||||
cy.dataCy('markAsReservedItem').click();
|
||||
cy.dataCy('ticketSaleReservedIcon').should('exist');
|
||||
});
|
||||
|
||||
it('unmarks row as reserved', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.waitForElement('[data-cy="unmarkAsReservedItem"]');
|
||||
cy.dataCy('unmarkAsReservedItem').click();
|
||||
cy.dataCy('ticketSaleReservedIcon').should('not.exist');
|
||||
});
|
||||
|
||||
it('refunds row with warehouse', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('ticketSaleRefundItem').click();
|
||||
cy.dataCy('ticketSaleRefundWithWarehouse').click();
|
||||
cy.checkNotification('The following refund ticket have been created');
|
||||
});
|
||||
|
||||
it('refunds row without warehouse', () => {
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||
cy.dataCy('ticketSaleRefundItem').click();
|
||||
cy.dataCy('ticketSaleRefundWithoutWarehouse').click();
|
||||
cy.checkNotification('The following refund ticket have been created');
|
||||
});
|
||||
|
||||
it('should redirect to ticket logs', () => {
|
||||
cy.get(firstRow).find('.q-btn:last').click();
|
||||
cy.url().should('match', /\/ticket\/31\/log/);
|
||||
});
|
||||
});
|
||||
describe('Ticket to transfer #32', () => {
|
||||
beforeEach(() => {
|
||||
cy.login('developer');
|
||||
cy.viewport(1920, 1080);
|
||||
cy.visit('/#/ticket/32/sale');
|
||||
});
|
||||
it('transfer sale to a new ticket', () => {
|
||||
cy.get('.q-item > .q-item__label').should('have.text', ' #32');
|
||||
selectFirstRow();
|
||||
cy.dataCy('ticketSaleTransferBtn').click();
|
||||
cy.dataCy('ticketTransferPopup').should('exist');
|
||||
cy.dataCy('ticketTransferNewTicketBtn').click();
|
||||
cy.get('.q-item > .q-item__label').should('not.have.text', ' #32');
|
||||
});
|
||||
});
|
||||
});
|
||||
function selectFirstRow() {
|
||||
cy.waitForElement(firstRow);
|
||||
cy.get(firstRow).find('.q-checkbox__inner').click();
|
||||
}
|
||||
function handleVnConfirm() {
|
||||
cy.get('[data-cy="VnConfirm_confirm"]').click();
|
||||
cy.waitForElement('.q-notification__message');
|
||||
|
|
Loading…
Reference in New Issue