2019-01-24 08:08:28 +00:00
|
|
|
const app = require('vn-loopback/server/server');
|
2018-08-21 09:27:42 +00:00
|
|
|
|
2018-10-25 09:50:18 +00:00
|
|
|
describe('ticket changeState()', () => {
|
|
|
|
let ticket;
|
|
|
|
|
2019-03-01 10:50:26 +00:00
|
|
|
beforeAll(async done => {
|
2018-10-25 09:50:18 +00:00
|
|
|
let originalTicket = await app.models.Ticket.findOne({where: {id: 16}});
|
|
|
|
originalTicket.id = null;
|
|
|
|
ticket = await app.models.Ticket.create(originalTicket);
|
2019-03-01 10:50:26 +00:00
|
|
|
|
|
|
|
done();
|
2018-10-25 09:50:18 +00:00
|
|
|
});
|
|
|
|
|
2019-03-01 10:50:26 +00:00
|
|
|
afterAll(async done => {
|
2018-10-25 09:50:18 +00:00
|
|
|
await app.models.Ticket.destroyById(ticket.id);
|
2019-03-01 10:50:26 +00:00
|
|
|
|
|
|
|
done();
|
2018-10-25 09:50:18 +00:00
|
|
|
});
|
|
|
|
|
2019-01-22 09:04:42 +00:00
|
|
|
it('should throw an error if the ticket is not editable and the user isnt production', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 18}}};
|
2018-08-21 09:27:42 +00:00
|
|
|
let params = {ticketFk: 2, stateFk: 3};
|
2019-01-29 15:37:59 +00:00
|
|
|
|
|
|
|
let errCode;
|
2018-08-21 09:27:42 +00:00
|
|
|
try {
|
|
|
|
await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
} catch (e) {
|
2019-01-29 15:37:59 +00:00
|
|
|
errCode = e.code;
|
2018-08-21 09:27:42 +00:00
|
|
|
}
|
|
|
|
|
2019-01-29 15:37:59 +00:00
|
|
|
expect(errCode).toBe('ACCESS_DENIED');
|
2018-08-21 09:27:42 +00:00
|
|
|
});
|
|
|
|
|
2019-01-22 09:04:42 +00:00
|
|
|
it('should throw an error if the state is assigned and theres not worker in params', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 18}}};
|
|
|
|
let assignedState = await app.models.State.findOne({where: {code: 'PICKER_DESIGNED'}});
|
|
|
|
let params = {ticketFk: 11, stateFk: assignedState.id};
|
2019-01-29 15:37:59 +00:00
|
|
|
|
|
|
|
let errCode;
|
2019-01-22 09:04:42 +00:00
|
|
|
try {
|
|
|
|
await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
} catch (e) {
|
2019-01-29 15:37:59 +00:00
|
|
|
errCode = e.details.codes.workerFk[0];
|
2019-01-22 09:04:42 +00:00
|
|
|
}
|
|
|
|
|
2019-01-29 15:37:59 +00:00
|
|
|
expect(errCode).toEqual('presence');
|
2019-01-22 09:04:42 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should throw an error if a worker thats not production tries to change the state to one thats not assigned', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 110}}};
|
|
|
|
let params = {ticketFk: 11, stateFk: 3};
|
2019-01-29 15:37:59 +00:00
|
|
|
|
|
|
|
let errCode;
|
2019-01-22 09:04:42 +00:00
|
|
|
try {
|
|
|
|
await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
} catch (e) {
|
2019-01-29 15:37:59 +00:00
|
|
|
errCode = e.code;
|
2019-01-22 09:04:42 +00:00
|
|
|
}
|
|
|
|
|
2019-01-29 15:37:59 +00:00
|
|
|
expect(errCode).toBe('ACCESS_DENIED');
|
2019-01-22 09:04:42 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should be able to create a ticket tracking line for a not editable ticket if the user has the production role', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 49}}};
|
|
|
|
let params = {ticketFk: ticket.id, stateFk: 3};
|
2018-08-21 09:27:42 +00:00
|
|
|
|
|
|
|
let res = await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
|
|
|
|
expect(res.__data.ticketFk).toBe(params.ticketFk);
|
|
|
|
expect(res.__data.stateFk).toBe(params.stateFk);
|
2019-01-22 09:04:42 +00:00
|
|
|
expect(res.__data.workerFk).toBe(49);
|
2018-08-21 09:27:42 +00:00
|
|
|
expect(res.__data.id).toBeDefined();
|
|
|
|
});
|
|
|
|
|
2019-01-22 09:04:42 +00:00
|
|
|
it('return an array with the created ticket tracking line', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 49}}};
|
2018-10-25 09:50:18 +00:00
|
|
|
let params = {ticketFk: ticket.id, stateFk: 3};
|
2018-08-21 09:27:42 +00:00
|
|
|
let res = await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
|
|
|
|
expect(res.__data.ticketFk).toBe(params.ticketFk);
|
|
|
|
expect(res.__data.stateFk).toBe(params.stateFk);
|
2019-01-22 09:04:42 +00:00
|
|
|
expect(res.__data.workerFk).toBe(49);
|
|
|
|
expect(res.__data.id).toBeDefined();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('return an array with the created ticket tracking line when the user is salesperson, uses the state assigned and thes a workerFk given', async() => {
|
|
|
|
let ctx = {req: {accessToken: {userId: 18}}};
|
|
|
|
let assignedState = await app.models.State.findOne({where: {code: 'PICKER_DESIGNED'}});
|
|
|
|
let params = {ticketFk: ticket.id, stateFk: assignedState.id, workerFk: 1};
|
|
|
|
let res = await app.models.TicketTracking.changeState(ctx, params);
|
|
|
|
|
|
|
|
expect(res.__data.ticketFk).toBe(params.ticketFk);
|
|
|
|
expect(res.__data.stateFk).toBe(params.stateFk);
|
|
|
|
expect(res.__data.workerFk).toBe(params.workerFk);
|
|
|
|
expect(res.__data.workerFk).toBe(1);
|
2018-08-21 09:27:42 +00:00
|
|
|
expect(res.__data.id).toBeDefined();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|