emi-challenge-fe/tests/app/features/tasks/feature/task-detail-page/task-detail-page.spec.ts

66 lines
2.3 KiB
TypeScript
Raw Permalink Normal View History

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter, ActivatedRoute } from '@angular/router';
import { TaskDetailPage } from '@app/features/tasks/feature/task-detail-page/task-detail-page';
import { TaskStore } from '@app/features/tasks/data-access/store/task-store';
import { TaskService } from '@app/features/tasks/data-access/services/task';
import { of } from 'rxjs';
import { TaskBuilder } from '@tests/builders/task.builder';
describe('TaskDetailPage', () => {
let component: TaskDetailPage;
let fixture: ComponentFixture<TaskDetailPage>;
let taskService: TaskService;
beforeEach(async () => {
taskService = {
getById: vi.fn().mockReturnValue(of(new TaskBuilder().build())),
update: vi.fn().mockReturnValue(of(new TaskBuilder().build())),
transition: vi.fn().mockReturnValue(of(new TaskBuilder().build())),
delete: vi.fn().mockReturnValue(of(undefined)),
addNote: vi.fn().mockReturnValue(of(new TaskBuilder().build())),
deleteNote: vi.fn().mockReturnValue(of(new TaskBuilder().build())),
} as unknown as TaskService;
await TestBed.configureTestingModule({
imports: [TaskDetailPage],
providers: [
provideRouter([]),
{
provide: ActivatedRoute,
useValue: {
snapshot: {
paramMap: {
get: vi.fn().mockReturnValue('task-1'),
},
},
},
},
{ provide: TaskService, useValue: taskService },
],
}).compileComponents();
fixture = TestBed.createComponent(TaskDetailPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should return current state from task history', () => {
const store = TestBed.inject(TaskStore);
store.setSelectedTask(new TaskBuilder().withState('active').build());
expect(component.currentState).toBe('active');
});
it('should return null for currentState when task has empty history', () => {
const store = TestBed.inject(TaskStore);
store.setSelectedTask(new TaskBuilder().withStateHistory([]).build());
expect(component.currentState).toBeNull();
});
});