2024-03-14 07:36:19 +00:00
|
|
|
const {models} = require('vn-loopback/server/server');
|
|
|
|
|
|
|
|
describe('machineWorker updateInTime()', () => {
|
|
|
|
const itBoss = 104;
|
|
|
|
const davidCharles = 1106;
|
|
|
|
|
|
|
|
beforeAll(async() => {
|
|
|
|
ctx = {
|
|
|
|
req: {
|
|
|
|
accessToken: {},
|
|
|
|
headers: {origin: 'http://localhost'},
|
|
|
|
__: value => value
|
|
|
|
}
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should throw an error if the plate does not exist', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
const plate = 'RE-123';
|
|
|
|
ctx.req.accessToken.userId = 1106;
|
|
|
|
try {
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
const error = e;
|
|
|
|
|
|
|
|
expect(error.message).toContain('the plate does not exist');
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should grab a machine where is not in use', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
const plate = 'RE-003';
|
|
|
|
ctx.req.accessToken.userId = 1107;
|
|
|
|
try {
|
|
|
|
const totalBefore = await models.MachineWorker.find(null, options);
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
const totalAfter = await models.MachineWorker.find(null, options);
|
|
|
|
|
|
|
|
expect(totalAfter.length).toEqual(totalBefore.length + 1);
|
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('less than 12h', () => {
|
|
|
|
const plate = 'RE-001';
|
|
|
|
it('should trow an error if it is not himself', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
ctx.req.accessToken.userId = davidCharles;
|
|
|
|
|
|
|
|
try {
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
const error = e;
|
|
|
|
|
|
|
|
expect(error.message).toContain('This machine is already in use');
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should throw an error if it is himself with a different machine', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
ctx.req.accessToken.userId = itBoss;
|
|
|
|
const plate = 'RE-003';
|
|
|
|
try {
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
const error = e;
|
|
|
|
|
|
|
|
expect(error.message).toEqual('You are already using a machine');
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should set the out time if it is himself', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
ctx.req.accessToken.userId = itBoss;
|
|
|
|
|
|
|
|
try {
|
|
|
|
const isNotParked = await models.MachineWorker.findOne({
|
|
|
|
where: {workerFk: itBoss}
|
|
|
|
}, options);
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
const isParked = await models.MachineWorker.findOne({
|
|
|
|
where: {workerFk: itBoss}
|
|
|
|
}, options);
|
|
|
|
|
|
|
|
expect(isNotParked.outTime).toBeNull();
|
|
|
|
expect(isParked.outTime).toBeDefined();
|
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('equal or more than 12h', () => {
|
|
|
|
const plate = 'RE-002';
|
|
|
|
it('should set the out time and grab the machine', async() => {
|
|
|
|
const tx = await models.MachineWorker.beginTransaction({});
|
|
|
|
const options = {transaction: tx};
|
|
|
|
ctx.req.accessToken.userId = davidCharles;
|
|
|
|
const filter = {
|
|
|
|
where: {workerFk: davidCharles, machineFk: 2}
|
|
|
|
};
|
|
|
|
try {
|
|
|
|
const isNotParked = await models.MachineWorker.findOne(filter, options);
|
|
|
|
const totalBefore = await models.MachineWorker.find(null, options);
|
|
|
|
await models.MachineWorker.updateInTime(ctx, plate, options);
|
|
|
|
const isParked = await models.MachineWorker.findOne(filter, options);
|
|
|
|
const totalAfter = await models.MachineWorker.find(null, options);
|
|
|
|
|
|
|
|
expect(isNotParked.outTime).toBeNull();
|
|
|
|
expect(isParked.outTime).toBeDefined();
|
2024-03-25 12:27:52 +00:00
|
|
|
expect(totalAfter.length).toEqual(totalBefore.length + 1);
|
2024-03-14 07:36:19 +00:00
|
|
|
await tx.rollback();
|
|
|
|
} catch (e) {
|
|
|
|
await tx.rollback();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|