salix/modules/ticket/back/methods/sale/specs/moveToTicket.spec.js

122 lines
4.4 KiB
JavaScript

const app = require('vn-loopback/server/server');
describe('sale moveToTicket()', () => {
let createdTicketId;
afterAll(async done => {
await app.models.Ticket.destroyById(createdTicketId);
done();
});
it('should throw an error if the ticket is not editable', async() => {
const ctx = {req: {accessToken: {userId: 101}}};
let error;
const params = {currentTicket: {currentTicketId: 10}};
await app.models.Sale.moveToTicket(ctx, params)
.catch(response => {
expect(response.message).toEqual(`The sales of the current ticket can't be modified`);
error = response;
});
expect(error).toBeDefined();
});
it('should throw an error if the receiving ticket is not editable', async() => {
const ctx = {req: {accessToken: {userId: 101}}};
let error;
const params = {currentTicket: {currentTicketId: 16}, receiverTicket: {id: 1}};
await app.models.Sale.moveToTicket(ctx, params)
.catch(response => {
expect(response.message).toEqual(`The sales of the receiver ticket can't be modified`);
error = response;
});
expect(error).toBeDefined();
});
it('should throw an error when attempting to create a new ticket without delivery dates', async() => {
const ctx = {req: {accessToken: {userId: 101}}};
let error;
const params = {currentTicket: {currentTicketId: 18}, receiverTicket: {id: undefined}};
await app.models.Sale.moveToTicket(ctx, params)
.catch(response => {
expect(response.message).toEqual(`Invalid parameters to create a new ticket`);
error = response;
});
expect(error).toBeDefined();
});
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);
currentTicket.currentTicketId = currentTicket.id;
currentTicket.id = undefined;
let currentTicketSales = await app.models.Ticket.getSales(currentTicket.currentTicketId);
expect(currentTicketSales.length).toEqual(2);
let params = {
currentTicket: currentTicket,
receiverTicket: {id: undefined},
sales: [
{id: currentTicketSales[0].id},
{id: currentTicketSales[1].id}
]
};
let createdTicket = await app.models.Sale.moveToTicket(ctx, params);
createdTicketId = createdTicket.id;
currentTicketSales = await app.models.Ticket.getSales(currentTicket.currentTicketId);
receiverTicketSales = await app.models.Ticket.getSales(createdTicket.id);
expect(currentTicketSales.length).toEqual(0);
expect(receiverTicketSales.length).toEqual(2);
});
it('should transfer back the sales and set the created ticket as deleted', async() => {
const ctx = {req: {accessToken: {userId: 101}}};
let receiverTicketId = 11;
let currentTicket = await app.models.Ticket.findById(createdTicketId);
currentTicket.currentTicketId = createdTicketId;
currentTicket.id = undefined;
let createdTicket = await app.models.Ticket.findById(createdTicketId);
let createdTicketSales = await app.models.Ticket.getSales(createdTicketId);
let receiverTicketSales = await app.models.Ticket.getSales(receiverTicketId);
expect(createdTicket.isDeleted).toBeFalsy();
expect(createdTicketSales.length).toEqual(2);
expect(receiverTicketSales.length).toEqual(0);
let params = {
removeEmptyTicket: true,
currentTicket: currentTicket,
receiverTicket: {id: receiverTicketId},
sales: [
{id: createdTicketSales[0].id},
{id: createdTicketSales[1].id}
]
};
await app.models.Sale.moveToTicket(ctx, params);
createdTicket = await app.models.Ticket.findById(createdTicketId);
createdTicketSales = await app.models.Ticket.getSales(createdTicketId);
receiverTicketSales = await app.models.Ticket.getSales(receiverTicketId);
expect(createdTicket.isDeleted).toBeTruthy();
expect(createdTicketSales.length).toEqual(0);
expect(receiverTicketSales.length).toEqual(2);
});
});