emi-challenge-fe/tests/app/features/tasks/data-access/models/task.model.spec.ts

47 lines
1.4 KiB
TypeScript
Raw Normal View History

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