test(frontend): raise overall statement coverage to 30.42% for Phase 1 MVP
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
// File: frontend/hooks/__tests__/use-dashboard.test.ts
|
||||
// Change Log:
|
||||
// - 2026-06-13: Initial creation - test coverage for use-dashboard hooks
|
||||
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
import { createTestQueryClient } from '@/lib/test-utils';
|
||||
import { useDashboardStats, useRecentActivity, usePendingTasks, dashboardKeys } from '../use-dashboard';
|
||||
import { dashboardService } from '@/lib/services/dashboard.service';
|
||||
|
||||
// Mock services
|
||||
vi.mock('@/lib/services/dashboard.service', () => ({
|
||||
dashboardService: {
|
||||
getStats: vi.fn(),
|
||||
getRecentActivity: vi.fn(),
|
||||
getPendingTasks: vi.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
describe('use-dashboard hooks', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe('dashboardKeys', () => {
|
||||
it('ควรสร้าง cache keys ที่ถูกต้อง', () => {
|
||||
expect(dashboardKeys.all).toEqual(['dashboard']);
|
||||
expect(dashboardKeys.stats('proj-1')).toEqual(['dashboard', 'stats', 'proj-1']);
|
||||
expect(dashboardKeys.activity('proj-2')).toEqual(['dashboard', 'activity', 'proj-2']);
|
||||
expect(dashboardKeys.pending('proj-3')).toEqual(['dashboard', 'pending', 'proj-3']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('useDashboardStats', () => {
|
||||
it('ควรดึงข้อมูล stats สำเร็จ', async () => {
|
||||
const mockData = { totalDocuments: 10, pendingApprovals: 2 };
|
||||
vi.mocked(dashboardService.getStats).mockResolvedValue(mockData as any);
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => useDashboardStats('proj-1'), { wrapper });
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
});
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
expect(dashboardService.getStats).toHaveBeenCalledWith('proj-1');
|
||||
});
|
||||
});
|
||||
|
||||
describe('useRecentActivity', () => {
|
||||
it('ควรดึงข้อมูล recent activity สำเร็จ', async () => {
|
||||
const mockData = [{ id: 'act-1', action: 'CREATE' }];
|
||||
vi.mocked(dashboardService.getRecentActivity).mockResolvedValue(mockData as any);
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => useRecentActivity('proj-1'), { wrapper });
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
});
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
expect(dashboardService.getRecentActivity).toHaveBeenCalledWith('proj-1');
|
||||
});
|
||||
});
|
||||
|
||||
describe('usePendingTasks', () => {
|
||||
it('ควรดึงข้อมูล pending tasks สำเร็จ', async () => {
|
||||
const mockData = [{ publicId: 'task-1', title: 'Task 1' }];
|
||||
vi.mocked(dashboardService.getPendingTasks).mockResolvedValue(mockData as any);
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => usePendingTasks('proj-1'), { wrapper });
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
});
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
expect(dashboardService.getPendingTasks).toHaveBeenCalledWith('proj-1');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user