const models = require('vn-loopback/server/server').models; describe('workerTimeControl sendMail()', () => { const workerId = 18; const ctx = { req: { __: value => { return value; } }, args: {} }; beforeAll(function() { originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; }); it('should fill time control of a worker without records in Journey and with rest', async() => { const tx = await models.WorkerTimeControl.beginTransaction({}); try { const options = {transaction: tx}; await models.WorkerTimeControl.sendMail(ctx, options); const workerTimeControl = await models.WorkerTimeControl.find({ where: {userFk: workerId} }, options); expect(workerTimeControl[0].timed.getHours()).toEqual(8); expect(workerTimeControl[1].timed.getHours()).toEqual(9); expect(`${workerTimeControl[2].timed.getHours()}:${workerTimeControl[2].timed.getMinutes()}`).toEqual('9:20'); expect(workerTimeControl[3].timed.getHours()).toEqual(16); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should fill time control of a worker without records in Journey and without rest', async() => { const workdayOf20Hours = 3; const tx = await models.WorkerTimeControl.beginTransaction({}); try { const options = {transaction: tx}; query = `UPDATE business b SET b.calendarTypeFk = ? WHERE b.workerFk = ?; `; await models.WorkerTimeControl.rawSql(query, [workdayOf20Hours, workerId], options); await models.WorkerTimeControl.sendMail(ctx, options); const workerTimeControl = await models.WorkerTimeControl.find({ where: {userFk: workerId} }, options); expect(workerTimeControl[0].timed.getHours()).toEqual(8); expect(workerTimeControl[1].timed.getHours()).toEqual(12); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should fill time control of a worker with records in Journey and with rest', async() => { const tx = await models.WorkerTimeControl.beginTransaction({}); try { const options = {transaction: tx}; query = `INSERT INTO postgresql.journey(journey_id, day_id, start, end, business_id) VALUES (1, 1, '09:00:00', '13:00:00', ?), (2, 1, '14:00:00', '19:00:00', ?);`; await models.WorkerTimeControl.rawSql(query, [workerId, workerId, workerId], options); await models.WorkerTimeControl.sendMail(ctx, options); const workerTimeControl = await models.WorkerTimeControl.find({ where: {userFk: workerId} }, options); expect(workerTimeControl[0].timed.getHours()).toEqual(9); expect(workerTimeControl[2].timed.getHours()).toEqual(10); expect(`${workerTimeControl[3].timed.getHours()}:${workerTimeControl[3].timed.getMinutes()}`).toEqual('10:20'); expect(workerTimeControl[1].timed.getHours()).toEqual(13); expect(workerTimeControl[4].timed.getHours()).toEqual(14); expect(workerTimeControl[5].timed.getHours()).toEqual(19); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should fill time control of a worker with records in Journey and without rest', async() => { const tx = await models.WorkerTimeControl.beginTransaction({}); try { const options = {transaction: tx}; query = `INSERT INTO postgresql.journey(journey_id, day_id, start, end, business_id) VALUES (1, 1, '12:30:00', '14:00:00', ?);`; await models.WorkerTimeControl.rawSql(query, [workerId, workerId, workerId], options); await models.WorkerTimeControl.sendMail(ctx, options); const workerTimeControl = await models.WorkerTimeControl.find({ where: {userFk: workerId} }, options); expect(`${workerTimeControl[0].timed.getHours()}:${workerTimeControl[0].timed.getMinutes()}`).toEqual('12:30'); expect(workerTimeControl[1].timed.getHours()).toEqual(14); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); afterAll(function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; }); });