diff --git a/frontend/src/routes/briefwechsel/CorrespondenzPersonBar.svelte.test.ts b/frontend/src/routes/briefwechsel/CorrespondenzPersonBar.svelte.test.ts index 5acc6c07..c7a176ea 100644 --- a/frontend/src/routes/briefwechsel/CorrespondenzPersonBar.svelte.test.ts +++ b/frontend/src/routes/briefwechsel/CorrespondenzPersonBar.svelte.test.ts @@ -92,4 +92,53 @@ describe('CorrespondenzPersonBar', () => { expect(onswapPersons).toHaveBeenCalledOnce(); }); + + it('opens the suggestions dropdown on receiver focus when a senderId is set', async () => { + const fetchSpy = vi.spyOn(globalThis, 'fetch').mockResolvedValue( + new Response(JSON.stringify([{ id: 'p3', firstName: 'Carl', lastName: 'Brandt' }]), { + status: 200, + headers: { 'Content-Type': 'application/json' } + }) + ); + try { + render(CorrespondenzPersonBar, { + props: baseProps({ senderId: 'p1', receiverId: '' }) + }); + + // Find the second PersonTypeahead input (Korrespondent) and trigger focus event + const inputs = document.querySelectorAll('input[type="text"]'); + const corrInput = inputs[inputs.length - 1] as HTMLInputElement; + corrInput.dispatchEvent(new Event('focus', { bubbles: true })); + + await new Promise((r) => setTimeout(r, 100)); + // No assertion on the suggestions dropdown UI (component-internal), + // just confirm the fetch was made + expect(fetchSpy).toHaveBeenCalled(); + } finally { + fetchSpy.mockRestore(); + } + }); + + it('does not show advanced filter chevron rotation when showAdvanced is false', async () => { + render(CorrespondenzPersonBar, { props: baseProps({ showAdvanced: false }) }); + + // The filter toggle button has a chevron — should NOT be rotated + const buttons = document.querySelectorAll('button'); + const filterBtn = Array.from(buttons).find((b) => + b.textContent?.toLowerCase().includes('filter') + ); + const chevron = filterBtn?.querySelector('img'); + expect(chevron?.getAttribute('class')).not.toContain('rotate-180'); + }); + + it('rotates the filter chevron when showAdvanced is true', async () => { + render(CorrespondenzPersonBar, { props: baseProps({ showAdvanced: true }) }); + + const buttons = document.querySelectorAll('button'); + const filterBtn = Array.from(buttons).find((b) => + b.textContent?.toLowerCase().includes('filter') + ); + const chevron = filterBtn?.querySelector('img'); + expect(chevron?.getAttribute('class')).toContain('rotate-180'); + }); });