test(transcription): cover MentionDropdown onSearch callback wiring

For issue #380. Asserts that typing in the search input invokes the
onSearch prop with the current value — characterising the boundary that
PersonMentionEditor relies on for its debounced fetch.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-19 20:57:15 +02:00
committed by marcel
parent 38b87f6a9f
commit ff3e8fb755

View File

@@ -7,9 +7,9 @@
* "no results" / "create new" behaviors. Wiring tests against Tiptap live
* in PersonMentionEditor.svelte.spec.ts.
*/
import { describe, it, expect, afterEach } from 'vitest';
import { describe, it, expect, afterEach, vi } from 'vitest';
import { cleanup, render } from 'vitest-browser-svelte';
import { page } from 'vitest/browser';
import { page, userEvent } from 'vitest/browser';
import MentionDropdown from './MentionDropdown.svelte';
import type { components } from '$lib/generated/api';
@@ -53,4 +53,20 @@ describe('MentionDropdown — search input', () => {
expect(input).not.toBeNull();
expect((input as HTMLInputElement).type).toBe('search');
});
it('invokes onSearch with the current value whenever the user types', async () => {
const onSearch = vi.fn();
render(MentionDropdown, {
model: makeModel(),
initialQuery: '',
onSearch
});
await userEvent.type(page.getByRole('searchbox'), 'Walter');
await vi.waitFor(() => {
expect(onSearch).toHaveBeenCalled();
expect(onSearch).toHaveBeenLastCalledWith('Walter');
});
});
});