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:
@@ -7,9 +7,9 @@
|
|||||||
* "no results" / "create new" behaviors. Wiring tests against Tiptap live
|
* "no results" / "create new" behaviors. Wiring tests against Tiptap live
|
||||||
* in PersonMentionEditor.svelte.spec.ts.
|
* 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 { cleanup, render } from 'vitest-browser-svelte';
|
||||||
import { page } from 'vitest/browser';
|
import { page, userEvent } from 'vitest/browser';
|
||||||
import MentionDropdown from './MentionDropdown.svelte';
|
import MentionDropdown from './MentionDropdown.svelte';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
|
|
||||||
@@ -53,4 +53,20 @@ describe('MentionDropdown — search input', () => {
|
|||||||
expect(input).not.toBeNull();
|
expect(input).not.toBeNull();
|
||||||
expect((input as HTMLInputElement).type).toBe('search');
|
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');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user