test(GetFonts): add tests for Filters component behavior
This commit is contained in:
63
src/features/GetFonts/ui/Filters/Filters.svelte.test.ts
Normal file
63
src/features/GetFonts/ui/Filters/Filters.svelte.test.ts
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import { filterManager } from '$features/GetFonts';
|
||||||
|
import {
|
||||||
|
render,
|
||||||
|
screen,
|
||||||
|
} from '@testing-library/svelte';
|
||||||
|
import Filters from './Filters.svelte';
|
||||||
|
|
||||||
|
describe('Filters', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
filterManager.setGroups([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Rendering', () => {
|
||||||
|
it('renders nothing when filter groups are empty', () => {
|
||||||
|
const { container } = render(Filters);
|
||||||
|
expect(container.firstElementChild).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders a label for each filter group', () => {
|
||||||
|
filterManager.setGroups([
|
||||||
|
{ id: 'cat', label: 'Category', properties: [] },
|
||||||
|
{ id: 'prov', label: 'Provider', properties: [] },
|
||||||
|
]);
|
||||||
|
render(Filters);
|
||||||
|
expect(screen.getByText('Category')).toBeInTheDocument();
|
||||||
|
expect(screen.getByText('Provider')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders filter properties within groups', () => {
|
||||||
|
filterManager.setGroups([
|
||||||
|
{
|
||||||
|
id: 'cat',
|
||||||
|
label: 'Category',
|
||||||
|
properties: [
|
||||||
|
{ id: 'serif', name: 'Serif', value: 'serif', selected: false },
|
||||||
|
{ id: 'sans', name: 'Sans-Serif', value: 'sans-serif', selected: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
render(Filters);
|
||||||
|
expect(screen.getByText('Serif')).toBeInTheDocument();
|
||||||
|
expect(screen.getByText('Sans-Serif')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders multiple groups with their properties', () => {
|
||||||
|
filterManager.setGroups([
|
||||||
|
{
|
||||||
|
id: 'cat',
|
||||||
|
label: 'Category',
|
||||||
|
properties: [{ id: 'mono', name: 'Monospace', value: 'monospace', selected: false }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'prov',
|
||||||
|
label: 'Provider',
|
||||||
|
properties: [{ id: 'google', name: 'Google', value: 'google', selected: false }],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
render(Filters);
|
||||||
|
expect(screen.getByText('Monospace')).toBeInTheDocument();
|
||||||
|
expect(screen.getByText('Google')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user