47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
import { createTask } from '@app/features/tasks/data-access/models/task.model';
|
|
|
|
describe('task.model', () => {
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
describe('createTask', () => {
|
|
it('should create task with all provided values', () => {
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(new Date('2026-05-13'));
|
|
const dto = { title: 'My Task', description: 'My description', dueDate: '2026-12-01' };
|
|
|
|
const task = createTask(dto);
|
|
|
|
expect(task.title).toBe('My Task');
|
|
expect(task.description).toBe('My description');
|
|
expect(task.dueDate).toBe('2026-12-01');
|
|
expect(task.stateHistory).toEqual([{ state: 'new', date: '2026-05-13' }]);
|
|
expect(task.notes).toEqual([]);
|
|
expect(task.id).toBeDefined();
|
|
});
|
|
|
|
it('should create task with default values when optional fields are missing', () => {
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(new Date('2026-05-13'));
|
|
const dto = { title: 'Minimal Task' };
|
|
|
|
const task = createTask(dto);
|
|
|
|
expect(task.title).toBe('Minimal Task');
|
|
expect(task.description).toBe('');
|
|
expect(task.dueDate).toBe('2026-05-13');
|
|
});
|
|
|
|
it('should generate unique ids for different tasks', () => {
|
|
const dto = { title: 'Task' };
|
|
|
|
const task1 = createTask(dto);
|
|
const task2 = createTask(dto);
|
|
|
|
expect(task1.id).not.toBe(task2.id);
|
|
});
|
|
});
|
|
});
|