test(frontend): raise overall statement coverage to 30.42% for Phase 1 MVP
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
// File: frontend/lib/services/__tests__/circulation.service.test.ts
|
||||
// Change Log:
|
||||
// - 2026-06-13: Initial creation - unit tests for circulationService
|
||||
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import apiClient from '@/lib/api/client';
|
||||
import { circulationService } from '../circulation.service';
|
||||
|
||||
// Mock apiClient
|
||||
vi.mock('@/lib/api/client', () => ({
|
||||
default: {
|
||||
get: vi.fn(),
|
||||
post: vi.fn(),
|
||||
patch: vi.fn(),
|
||||
delete: vi.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
describe('circulationService', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe('getAll', () => {
|
||||
it('ควรดึงรายการ Circulation ทั้งหมดพร้อม params', async () => {
|
||||
const mockResponse = { data: [{ publicId: 'uuid-1', subject: 'Circulation A' }] };
|
||||
vi.mocked(apiClient.get).mockResolvedValue(mockResponse);
|
||||
const searchParams = { search: 'Circ' };
|
||||
const result = await circulationService.getAll(searchParams);
|
||||
expect(apiClient.get).toHaveBeenCalledWith('/circulations', { params: searchParams });
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getByUuid', () => {
|
||||
it('ควรดึงรายละเอียด Circulation ตาม uuid', async () => {
|
||||
const mockResponse = { data: { publicId: 'uuid-1', subject: 'Circulation A' } };
|
||||
vi.mocked(apiClient.get).mockResolvedValue(mockResponse);
|
||||
const result = await circulationService.getByUuid('uuid-1');
|
||||
expect(apiClient.get).toHaveBeenCalledWith('/circulations/uuid-1');
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('create', () => {
|
||||
it('ควรสร้าง Circulation ใหม่', async () => {
|
||||
const mockResponse = { data: { publicId: 'uuid-1', subject: 'Circulation A' } };
|
||||
vi.mocked(apiClient.post).mockResolvedValue(mockResponse);
|
||||
const createDto = {
|
||||
correspondenceId: 'uuid-corr',
|
||||
recipientUserIds: ['uuid-user'],
|
||||
};
|
||||
const result = await circulationService.create(createDto as any);
|
||||
expect(apiClient.post).toHaveBeenCalledWith('/circulations', createDto);
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateRouting', () => {
|
||||
it('ควรปรับปรุงข้อมูลการ Routing', async () => {
|
||||
const mockResponse = { data: { success: true } };
|
||||
vi.mocked(apiClient.patch).mockResolvedValue(mockResponse);
|
||||
const routingDto = { action: 'ACKNOWLEDGE', comments: 'Seen.' };
|
||||
const result = await circulationService.updateRouting('uuid-1', routingDto as any);
|
||||
expect(apiClient.patch).toHaveBeenCalledWith('/circulations/uuid-1/routing', routingDto);
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getByCorrespondenceUuid', () => {
|
||||
it('ควรดึงรายการ Circulation โดยอิงตาม correspondence uuid', async () => {
|
||||
const mockResponse = { data: [{ publicId: 'uuid-1', subject: 'Circulation A' }] };
|
||||
vi.mocked(apiClient.get).mockResolvedValue(mockResponse);
|
||||
const result = await circulationService.getByCorrespondenceUuid('uuid-corr-1');
|
||||
expect(apiClient.get).toHaveBeenCalledWith('/circulations', {
|
||||
params: { correspondencePublicId: 'uuid-corr-1', limit: 50 },
|
||||
});
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('delete', () => {
|
||||
it('ควรลบ Circulation', async () => {
|
||||
const mockResponse = { data: { success: true } };
|
||||
vi.mocked(apiClient.delete).mockResolvedValue(mockResponse);
|
||||
const result = await circulationService.delete('uuid-1');
|
||||
expect(apiClient.delete).toHaveBeenCalledWith('/circulations/uuid-1');
|
||||
expect(result).toEqual(mockResponse.data);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user