diff --git a/apps/server/src/utils/__tests__/parser.test.ts b/apps/server/src/utils/__tests__/parser.test.ts index 835dac841..bf9e8c74c 100644 --- a/apps/server/src/utils/__tests__/parser.test.ts +++ b/apps/server/src/utils/__tests__/parser.test.ts @@ -525,7 +525,7 @@ describe('test event validator', () => { expect(typeof validated.timeStart).toEqual('number'); expect(validated.timeStart).toEqual(0); expect(typeof validated.timeEnd).toEqual('number'); - expect(validated.timeEnd).toEqual(0); + expect(validated.timeEnd).toEqual(2); }); it('handles bad objects', () => { diff --git a/packages/utils/src/validate-events/validateEvent.test.ts b/packages/utils/src/validate-events/validateEvent.test.ts index 02e25480d..071b4cd91 100644 --- a/packages/utils/src/validate-events/validateEvent.test.ts +++ b/packages/utils/src/validate-events/validateEvent.test.ts @@ -86,4 +86,11 @@ describe('validateTimes()', () => { expect(timeEnd).toBe(10); expect(duration).toBe(10); }); + + it('ensures values are integers', () => { + const { timeStart, timeEnd, duration } = validateTimes(0.000001, 10.312335342, 10); + expect(timeStart).toBe(0); + expect(timeEnd).toBe(10); + expect(duration).toBe(10); + }); }); diff --git a/packages/utils/src/validate-events/validateEvent.ts b/packages/utils/src/validate-events/validateEvent.ts index 85b2e6e07..c996bb032 100644 --- a/packages/utils/src/validate-events/validateEvent.ts +++ b/packages/utils/src/validate-events/validateEvent.ts @@ -40,10 +40,15 @@ export const calculateDuration = (timeStart: number, timeEnd: number): number => return timeEnd - timeStart; }; -export function validateTimes(_start?: number | null, _end?: number | null, _duration?: number | null) { - const timeStart = _start ?? 0; - const timeEnd = _end ?? 0; - const duration = _duration ?? 0; +function convertToInteger(value: unknown): number { + const result = Number(value); + return isNaN(result) ? 0 : Math.floor(result); +} + +export function validateTimes(_start?: unknown, _end?: unknown, _duration?: unknown) { + const timeStart = convertToInteger(_start); + const timeEnd = convertToInteger(_end); + const duration = convertToInteger(_duration); if (_start != null && _end != null) { // Case 1. if we have start and end, duration must be derived @@ -56,7 +61,7 @@ export function validateTimes(_start?: number | null, _end?: number | null, _dur return { timeStart, duration, timeEnd }; } // Case 3. we have a duration and infer the rest - return { timeStart, duration: _duration, timeEnd: _duration }; + return { timeStart, duration, timeEnd: duration }; } if (_start != null) {