test(frontend): raise overall statement coverage to 30.42% for Phase 1 MVP
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
// File: frontend/hooks/__tests__/use-transmittal.test.ts
|
||||
// Change Log:
|
||||
// - 2026-06-13: Initial creation - test coverage for useTransmittal hook
|
||||
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
import { createTestQueryClient } from '@/lib/test-utils';
|
||||
import { useTransmittal, transmittalKeys } from '../use-transmittal';
|
||||
import { transmittalService } from '@/lib/services/transmittal.service';
|
||||
|
||||
// Mock service
|
||||
vi.mock('@/lib/services/transmittal.service', () => ({
|
||||
transmittalService: {
|
||||
getByUuid: vi.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
describe('useTransmittal hook', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe('transmittalKeys', () => {
|
||||
it('ควรสร้าง cache keys ที่ถูกต้อง', () => {
|
||||
expect(transmittalKeys.all).toEqual(['transmittals']);
|
||||
expect(transmittalKeys.detail('uuid-1')).toEqual(['transmittals', 'detail', 'uuid-1']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('useTransmittal', () => {
|
||||
it('ควรดึงรายละเอียด transmittal สำเร็จ', async () => {
|
||||
const mockData = { publicId: 'uuid-1', transmittalNumber: 'TR-001' };
|
||||
vi.mocked(transmittalService.getByUuid).mockResolvedValue(mockData as any);
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => useTransmittal('uuid-1'), { wrapper });
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false);
|
||||
});
|
||||
expect(result.current.transmittal).toEqual(mockData);
|
||||
expect(transmittalService.getByUuid).toHaveBeenCalledWith('uuid-1');
|
||||
});
|
||||
|
||||
it('ควรดึงรายละเอียด transmittal สำเร็จในแบบ wrapped response', async () => {
|
||||
const mockData = { publicId: 'uuid-2', transmittalNumber: 'TR-002' };
|
||||
vi.mocked(transmittalService.getByUuid).mockResolvedValue({ data: mockData } as any);
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => useTransmittal('uuid-2'), { wrapper });
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false);
|
||||
});
|
||||
expect(result.current.transmittal).toEqual(mockData);
|
||||
});
|
||||
|
||||
it('ไม่ควรทำงานเมื่อไม่ระบุ uuid', async () => {
|
||||
const { wrapper } = createTestQueryClient();
|
||||
const { result } = renderHook(() => useTransmittal(undefined), { wrapper });
|
||||
expect(result.current.isLoading).toBe(false);
|
||||
expect(result.current.transmittal).toBeUndefined();
|
||||
expect(transmittalService.getByUuid).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user