32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
const {
|
|
applyDefaultTaskTimes,
|
|
distributeTaskTime,
|
|
getCarpenterTaskWeight
|
|
} = require('../src/services/smartPackageDefaultsService');
|
|
|
|
describe('smartPackageDefaultsService', () => {
|
|
test('distributes the package time exactly across carpenter tasks', () => {
|
|
const result = distributeTaskTime([
|
|
{ name: 'Opmåling' },
|
|
{ name: 'Tilskæring' },
|
|
{ name: 'Montage' },
|
|
{ name: 'Slutkontrol' }
|
|
], 0.25, 'per_m2');
|
|
|
|
expect(result.reduce((sum, task) => sum + task.hours, 0)).toBeCloseTo(0.25, 5);
|
|
expect(result[2].hours).toBeGreaterThan(result[0].hours);
|
|
expect(result[0].hours).toBeGreaterThan(result[3].hours);
|
|
expect(result.every(task => task.timeUnit === 'per_sqm')).toBe(true);
|
|
});
|
|
|
|
test('keeps user-entered task times unchanged', () => {
|
|
const tasks = [{ name: 'Montage', hours: 2 }, { name: 'Kontrol', hours: 1 }];
|
|
expect(applyDefaultTaskTimes(tasks, 8, 'total')).toEqual(tasks);
|
|
});
|
|
|
|
test('weights main carpenter work above final control', () => {
|
|
expect(getCarpenterTaskWeight({ name: 'Montage af taglægter' }))
|
|
.toBeGreaterThan(getCarpenterTaskWeight({ name: 'Slutkontrol' }));
|
|
});
|
|
});
|