690619:1226 240 #03
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
// File: frontend/lib/services/__tests__/admin-ai.service.test.ts
|
||||
// Change Log:
|
||||
// - 2026-06-19: เพิ่ม regression tests สำหรับ AI Admin response normalization
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import apiClient from '@/lib/api/client';
|
||||
import { adminAiService } from '../admin-ai.service';
|
||||
import { adminAiPromptService } from '../admin-ai-prompt.service';
|
||||
|
||||
const promptVersion = {
|
||||
publicId: '0195aaaa-aaaa-7000-8000-aaaaaaaaaaaa',
|
||||
promptType: 'ocr_system',
|
||||
versionNumber: 1,
|
||||
version: 3,
|
||||
template: 'OCR prompt',
|
||||
isActive: true,
|
||||
createdAt: '2026-06-19T00:00:00.000Z',
|
||||
};
|
||||
|
||||
describe('admin AI service normalization', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it('ควร unwrap VRAM response ที่ถูกห่อ data ซ้อนกัน', async () => {
|
||||
vi.mocked(apiClient.get).mockResolvedValue({
|
||||
data: {
|
||||
data: {
|
||||
totalVramMb: 16384,
|
||||
usedVramMb: 4096,
|
||||
freeVramMb: 12288,
|
||||
hasCapacity: true,
|
||||
loadedModels: [
|
||||
{
|
||||
modelId: 'np-dms-ai:latest',
|
||||
modelName: 'np-dms-ai:latest',
|
||||
vramUsageMB: 4096,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await adminAiService.getVramStatus();
|
||||
|
||||
expect(result.totalVRAMMB).toBe(16384);
|
||||
expect(result.usedVRAMMB).toBe(4096);
|
||||
expect(result.usagePercent).toBe(25);
|
||||
expect(result.canLoadModel).toBe(true);
|
||||
expect(result.loadedModels).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('ควรไม่แสดง OOM Guard เมื่อ backend ยังไม่ส่ง total VRAM', async () => {
|
||||
vi.mocked(apiClient.get).mockResolvedValue({
|
||||
data: {
|
||||
data: {
|
||||
loadedModels: [],
|
||||
hasCapacity: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await adminAiService.getVramStatus();
|
||||
|
||||
expect(result.totalVRAMMB).toBe(0);
|
||||
expect(result.usedVRAMMB).toBe(0);
|
||||
expect(result.canLoadModel).toBe(true);
|
||||
});
|
||||
|
||||
it('ควรคืน prompt list เป็น array เมื่อ response ถูกห่อ data ซ้อนกัน', async () => {
|
||||
vi.mocked(apiClient.get).mockResolvedValue({
|
||||
data: {
|
||||
data: {
|
||||
data: [promptVersion],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await adminAiPromptService.getPrompts('ocr_system');
|
||||
|
||||
expect(result).toEqual([promptVersion]);
|
||||
});
|
||||
|
||||
it('ควรคืน empty array เมื่อ prompt payload ไม่ใช่ array', async () => {
|
||||
vi.mocked(apiClient.get).mockResolvedValue({
|
||||
data: {
|
||||
data: {
|
||||
message: 'unexpected payload',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await adminAiPromptService.getPrompts('ocr_system');
|
||||
|
||||
expect(result).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user