diff --git a/src/modules/record/interfaces/time-range.fixture.ts b/src/modules/record/interfaces/time-range.fixture.ts new file mode 100644 index 0000000..9cdb655 --- /dev/null +++ b/src/modules/record/interfaces/time-range.fixture.ts @@ -0,0 +1,18 @@ +import { toISODate } from '@/shared/types/date' +import { faker } from '@faker-js/faker' +import type { TimeRange } from './time-range' + +export const createTimeRangeFixture = ( + partialTimeRange?: Partial +): TimeRange => { + const [start, end] = faker.date.betweens( + toISODate(faker.date.past(1)), + toISODate(new Date()), + 2 + ) + + return { + start: partialTimeRange?.start ?? toISODate(start), + end: partialTimeRange?.end ?? toISODate(end) + } +} diff --git a/src/modules/record/models/task-record.test.ts b/src/modules/record/models/task-record.test.ts new file mode 100644 index 0000000..9fb7106 --- /dev/null +++ b/src/modules/record/models/task-record.test.ts @@ -0,0 +1,23 @@ +import { toISODate } from '@/shared/types/date' +import { faker } from '@faker-js/faker' +import { describe, expect, it } from 'vitest' +import type { Recordable } from '../interfaces/recordable' +import { createTimeRangeFixture } from '../interfaces/time-range.fixture' +import { TaskRecord } from './task-record' + +describe('Task Record', () => { + it('creates a Record from a Recordable', () => { + const recordable: Recordable = { + taskId: faker.datatype.uuid(), + notes: faker.lorem.paragraphs(), + start: toISODate(faker.date.past(1)), + end: toISODate(faker.date.past()), + breakTime: createTimeRangeFixture(), + stepRecords: { + [faker.datatype.uuid()]: createTimeRangeFixture() + } + } + + expect(TaskRecord.fromRecordable(recordable)).toEqual(recordable) + }) +}) diff --git a/src/modules/record/models/task-record.ts b/src/modules/record/models/task-record.ts index aefdf11..051d6cc 100644 --- a/src/modules/record/models/task-record.ts +++ b/src/modules/record/models/task-record.ts @@ -22,6 +22,7 @@ export class TaskRecord implements Recordable { taskRecord.start = recordable.start taskRecord.end = recordable.end taskRecord.breakTime = recordable.breakTime + taskRecord.notes = recordable.notes return taskRecord }