47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { render, screen } from '@testing-library/svelte';
|
|
import VarietyWarningCards from './VarietyWarningCards.svelte';
|
|
|
|
const warnings = [
|
|
{
|
|
title: 'Chicken zweimal diese Woche',
|
|
items: [
|
|
{ dayShort: 'Mo', recipeName: 'Chicken Tikka', slotId: 1 },
|
|
{ dayShort: 'Mi', recipeName: 'Chicken Curry', slotId: 3 }
|
|
]
|
|
},
|
|
{
|
|
title: 'Tomaten in 3 Gerichten',
|
|
items: [
|
|
{ dayShort: 'Mo', recipeName: 'Pasta Pomodoro', slotId: 1 },
|
|
{ dayShort: 'Di', recipeName: 'Tomatensuppe', slotId: 2 },
|
|
{ dayShort: 'Mi', recipeName: 'Pizza Margherita', slotId: 3 }
|
|
]
|
|
}
|
|
];
|
|
|
|
describe('VarietyWarningCards', () => {
|
|
it('renders one card per warning', () => {
|
|
render(VarietyWarningCards, { props: { warnings, weekStart: '2026-04-07' } });
|
|
const cards = screen.getAllByTestId('warning-card');
|
|
expect(cards.length).toBe(2);
|
|
});
|
|
|
|
it('renders warning titles', () => {
|
|
render(VarietyWarningCards, { props: { warnings, weekStart: '2026-04-07' } });
|
|
expect(screen.getByText(/Chicken zweimal/)).toBeTruthy();
|
|
expect(screen.getByText(/Tomaten in 3/)).toBeTruthy();
|
|
});
|
|
|
|
it('renders warning explanations', () => {
|
|
render(VarietyWarningCards, { props: { warnings, weekStart: '2026-04-07' } });
|
|
expect(screen.getByText('Chicken Tikka')).toBeTruthy();
|
|
expect(screen.getByText('Chicken Curry')).toBeTruthy();
|
|
});
|
|
|
|
it('renders nothing when warnings is empty', () => {
|
|
render(VarietyWarningCards, { props: { warnings: [], weekStart: '2026-04-07' } });
|
|
expect(screen.queryAllByTestId('warning-card').length).toBe(0);
|
|
});
|
|
});
|