#1685 ticket.transferSale

This commit is contained in:
Carlos Jimenez Ruiz 2019-09-27 16:55:40 +02:00
parent 641dad2ced
commit 6e50c1fad9
2 changed files with 75 additions and 8 deletions

View File

@ -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);
});
});
});

View File

@ -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);
}