import { describe, it, expect } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/svelte'; import SuggestionContextBanner from './SuggestionContextBanner.svelte'; const weekPlan = { id: 'plan-1', weekStart: '2026-03-30', slots: [ { id: 's1', slotDate: '2026-03-30', recipe: { id: 'r1', name: 'Pasta', effort: 'Easy' } }, { id: 's2', slotDate: '2026-03-31', recipe: { id: 'r2', name: 'Curry', effort: 'Hard' } } ] }; describe('SuggestionContextBanner', () => { it('renders the selected day label', () => { render(SuggestionContextBanner, { props: { selectedDay: '2026-04-01', weekPlan } }); // Day label should be visible expect(screen.getByTestId('context-banner')).toBeTruthy(); }); it('renders meals from the current week after expanding', async () => { render(SuggestionContextBanner, { props: { selectedDay: '2026-04-01', weekPlan } }); // Banner starts collapsed — expand it first const toggle = screen.getByRole('button', { name: /Filter|einblenden/i }); await fireEvent.click(toggle); expect(screen.getByText(/Pasta/)).toBeTruthy(); expect(screen.getByText(/Curry/)).toBeTruthy(); }); it('starts collapsed and expands on toggle', async () => { render(SuggestionContextBanner, { props: { selectedDay: '2026-04-01', weekPlan } }); const detail = screen.getByTestId('context-detail'); // Initially collapsed expect(detail.hasAttribute('hidden')).toBe(true); const toggle = screen.getByRole('button', { name: /Filter|einblenden/i }); await fireEvent.click(toggle); // After toggle: expanded expect(detail.hasAttribute('hidden')).toBe(false); await fireEvent.click(toggle); // After second toggle: collapsed again expect(detail.hasAttribute('hidden')).toBe(true); }); it('renders with no slots gracefully', () => { render(SuggestionContextBanner, { props: { selectedDay: '2026-04-01', weekPlan: { ...weekPlan, slots: [] } } }); expect(screen.getByTestId('context-banner')).toBeTruthy(); }); });