// File: frontend/components/admin/ai/__tests__/prompt-version-history.test.tsx
// Change Log
// - 2026-06-13: Add coverage for prompt version history rendering and actions.
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
import PromptVersionHistory from '../PromptVersionHistory';
import type { AiPrompt } from '@/types/ai-prompts';
const versions: AiPrompt[] = [
{
publicId: '019505a1-7c3e-7000-8000-abc123defa01',
promptType: 'metadata_extraction',
versionNumber: 3,
template: 'active prompt',
isActive: true,
createdAt: '2026-06-13T08:00:00.000Z',
lastTestedAt: '2026-06-13T09:00:00.000Z',
manualNote: 'ผ่านการทดสอบกับ RFA แล้ว',
},
{
publicId: '019505a1-7c3e-7000-8000-abc123defa02',
promptType: 'metadata_extraction',
versionNumber: 2,
template: 'draft prompt',
isActive: false,
createdAt: '2026-06-12T08:00:00.000Z',
},
];
describe('PromptVersionHistory', () => {
it('renders loading and empty states', () => {
const callbacks = {
onLoadTemplate: vi.fn(),
onActivateVersion: vi.fn(),
onDeleteVersion: vi.fn(),
};
const { rerender } = render(
);
expect(screen.getByText('กำลังโหลดประวัติเวอร์ชัน...')).toBeInTheDocument();
rerender();
expect(screen.getByText('ไม่พบเวอร์ชันอื่นในระบบ')).toBeInTheDocument();
});
it('renders versions and triggers version actions', async () => {
const user = userEvent.setup();
const onLoadTemplate = vi.fn();
const onActivateVersion = vi.fn();
const onDeleteVersion = vi.fn();
render(
);
expect(screen.getByText('v3')).toBeInTheDocument();
expect(screen.getByText('ใช้งานจริง (Active)')).toBeInTheDocument();
expect(screen.getByText('ผ่านการทดสอบกับ RFA แล้ว')).toBeInTheDocument();
await user.click(screen.getAllByRole('button', { name: 'โหลด (Load)' })[1]);
await user.click(screen.getByRole('button', { name: 'ใช้งาน (Activate)' }));
await user.click(screen.getByRole('button', { name: '' }));
expect(onLoadTemplate).toHaveBeenCalledWith(versions[1]);
expect(onActivateVersion).toHaveBeenCalledWith(2);
expect(onDeleteVersion).toHaveBeenCalledWith(2);
});
});