feat(admin): add OcrHealthBar, OcrStatCards, OcrModelsTable components
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
44
frontend/src/routes/admin/ocr/OcrModelsTable.svelte.spec.ts
Normal file
44
frontend/src/routes/admin/ocr/OcrModelsTable.svelte.spec.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { afterEach, describe, it, expect } from 'vitest';
|
||||
import { cleanup, render } from 'vitest-browser-svelte';
|
||||
import { page } from 'vitest/browser';
|
||||
import OcrModelsTable from './OcrModelsTable.svelte';
|
||||
import type { components } from '$lib/generated/api';
|
||||
|
||||
afterEach(cleanup);
|
||||
|
||||
type SenderModel = components['schemas']['SenderModel'];
|
||||
|
||||
const personId = '123e4567-e89b-12d3-a456-426614174000';
|
||||
const model: SenderModel = {
|
||||
id: 'aaa00000-0000-0000-0000-000000000001',
|
||||
personId,
|
||||
correctedLinesAtTraining: 120,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-06-01T00:00:00Z',
|
||||
cer: 0.04,
|
||||
accuracy: 0.96
|
||||
};
|
||||
|
||||
describe('OcrModelsTable', () => {
|
||||
it('shows person name when provided', async () => {
|
||||
render(OcrModelsTable, {
|
||||
senderModels: [model],
|
||||
personNames: { [personId]: 'Anna Müller' }
|
||||
});
|
||||
await expect.element(page.getByText('Anna Müller')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('shows person ID when name is missing', async () => {
|
||||
render(OcrModelsTable, {
|
||||
senderModels: [model],
|
||||
personNames: {}
|
||||
});
|
||||
await expect.element(page.getByText(personId)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('shows empty state when no models', async () => {
|
||||
render(OcrModelsTable, { senderModels: [], personNames: {} });
|
||||
const rows = document.querySelectorAll('tbody tr');
|
||||
expect(rows.length).toBe(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user