#1685 ticket.transferSale
This commit is contained in:
parent
641dad2ced
commit
6e50c1fad9
|
@ -2,9 +2,12 @@ const app = require('vn-loopback/server/server');
|
|||
|
||||
describe('sale transferSales()', () => {
|
||||
let createdTicketId;
|
||||
let createdTicketsIds = [];
|
||||
|
||||
afterAll(async done => {
|
||||
await app.models.Ticket.destroyById(createdTicketId);
|
||||
createdTicketsIds.forEach(async createdTicketId => {
|
||||
await app.models.Ticket.destroyById(createdTicketId);
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
|
@ -62,22 +65,23 @@ describe('sale transferSales()', () => {
|
|||
it('should transfer the sales from one ticket to a new one', async() => {
|
||||
const ctx = {req: {accessToken: {userId: 101}}};
|
||||
let currentTicket = await app.models.Ticket.findById(11);
|
||||
let currentTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
let originalTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
salesToRestone = originalTicketSales;
|
||||
|
||||
expect(currentTicketSales.length).toEqual(2);
|
||||
expect(originalTicketSales.length).toEqual(2);
|
||||
|
||||
const currentTicketId = currentTicket.id;
|
||||
const receiverTicketId = undefined;
|
||||
const sales = currentTicketSales;
|
||||
|
||||
let createdTicket = await app.models.Ticket.transferSales(
|
||||
ctx, currentTicketId, receiverTicketId, sales);
|
||||
ctx, currentTicketId, receiverTicketId, originalTicketSales);
|
||||
createdTicketId = createdTicket.id;
|
||||
createdTicketsIds.push(createdTicket.id);
|
||||
|
||||
currentTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
originalTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
receiverTicketSales = await app.models.Ticket.getSales(createdTicket.id);
|
||||
|
||||
expect(currentTicketSales.length).toEqual(0);
|
||||
expect(originalTicketSales.length).toEqual(0);
|
||||
expect(receiverTicketSales.length).toEqual(2);
|
||||
});
|
||||
|
||||
|
@ -108,4 +112,67 @@ describe('sale transferSales()', () => {
|
|||
expect(createdTicketSales.length).toEqual(0);
|
||||
expect(receiverTicketSales.length).toEqual(2);
|
||||
});
|
||||
|
||||
describe('sale transferPartialSales()', () => {
|
||||
it('should throw an error in the quantity to transfer exceeds the amount from the original sale', async() => {
|
||||
const ctx = {req: {accessToken: {userId: 101}}};
|
||||
let error;
|
||||
let currentTicket = await app.models.Ticket.findById(11);
|
||||
let currentTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
|
||||
const currentTicketId = currentTicket.id;
|
||||
const receiverTicketId = undefined;
|
||||
|
||||
currentTicketSales[0].quantity = 99;
|
||||
|
||||
await app.models.Ticket.transferSales(
|
||||
ctx, currentTicketId, receiverTicketId, currentTicketSales)
|
||||
.catch(response => {
|
||||
expect(response.message).toEqual(`Invalid quantity`);
|
||||
error = response;
|
||||
});
|
||||
|
||||
expect(error).toBeDefined();
|
||||
});
|
||||
|
||||
it('should partially transfer the sales from one ticket to a new one', async() => {
|
||||
const ctx = {req: {accessToken: {userId: 101}}};
|
||||
let currentTicket = await app.models.Ticket.findById(11);
|
||||
let currentTicketSales = [];
|
||||
let saleToRestore = await app.models.Sale.findById(7);
|
||||
currentTicketSales.push(saleToRestore);
|
||||
|
||||
expect(currentTicketSales[0].quantity).toEqual(15);
|
||||
|
||||
const currentTicketId = currentTicket.id;
|
||||
const receiverTicketId = undefined;
|
||||
|
||||
const originalQuantity = currentTicketSales[0].quantity;
|
||||
currentTicketSales[0].quantity = 1;
|
||||
let salesToPartiallyTransfer = [currentTicketSales[0]];
|
||||
const saleIdToRestore = currentTicketSales[0].id;
|
||||
|
||||
let createdTicket = await app.models.Ticket.transferSales(
|
||||
ctx, currentTicketId, receiverTicketId, salesToPartiallyTransfer);
|
||||
|
||||
createdTicketId = createdTicket.id;
|
||||
createdTicketsIds.push(createdTicket.id);
|
||||
|
||||
currentTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
receiverTicketSales = await app.models.Ticket.getSales(createdTicket.id);
|
||||
|
||||
expect(currentTicketSales.length).toEqual(2);
|
||||
expect(currentTicketSales[0].quantity).toEqual(14);
|
||||
expect(receiverTicketSales.length).toEqual(1);
|
||||
expect(receiverTicketSales[0].quantity).toEqual(1);
|
||||
|
||||
saleToRestore.updateAttribute('quantity', originalQuantity);
|
||||
|
||||
currentTicketSales = await app.models.Ticket.getSales(currentTicket.id);
|
||||
|
||||
|
||||
expect(currentTicketSales[0].quantity).toEqual(15);
|
||||
expect(currentTicketSales[0].id).toEqual(saleIdToRestore);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -72,7 +72,7 @@ module.exports = Self => {
|
|||
await models.Sale.updateAll({
|
||||
id: sale.id
|
||||
}, {ticketFk: ticketId}, options);
|
||||
} else if (sale.quantity < originalSale.quantity) {
|
||||
} else if (sale.quantity != originalSale.quantity) {
|
||||
await transferPartialSale(
|
||||
ticketId, originalSale, sale, options);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue