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