import { render, screen } from '@testing-library/svelte'; import userEvent from '@testing-library/user-event'; import { beforeEach, expect, test, describe, it, vi } from 'vitest'; import CreateConversationForm from '$lib/components/CreateConversationForm.svelte'; const user = userEvent.setup(); const mocks = vi.hoisted(() => ({ createConversation: vi.fn(), })); describe('CreateConversationForm', async () => { beforeEach(async () => { render(CreateConversationForm, { createConversation: mocks.createConversation, }); }); describe('creates conversations', async () => { it('with a non-empty name', async () => { const input = screen.getByRole('textbox'); await user.type(input, 'conversation name'); const create = screen.getByRole('button'); await user.click(create); expect(mocks.createConversation).toHaveBeenCalledExactlyOnceWith('conversation name'); }); it('with an empty name', async () => { const create = screen.getByRole('button'); await user.click(create); expect(mocks.createConversation).toHaveBeenCalledExactlyOnceWith(''); }); }); });