From c51acf1aaeca24b0174ee8ff8144735c14196f17 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Mon, 1 May 2023 19:10:24 +0200 Subject: [PATCH] =?UTF-8?q?test:=20=F0=9F=92=8D=20task=20record?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add test for fromRecordable method --- .../record/interfaces/time-range.fixture.ts | 18 +++++++++++++++ src/modules/record/models/task-record.test.ts | 23 +++++++++++++++++++ src/modules/record/models/task-record.ts | 1 + 3 files changed, 42 insertions(+) create mode 100644 src/modules/record/interfaces/time-range.fixture.ts create mode 100644 src/modules/record/models/task-record.test.ts 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 }