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' })); }); });