import { render, screen } from '@testing-library/svelte'; import userEvent from '@testing-library/user-event'; import { beforeEach, expect, test, describe, it, vi } from 'vitest'; import LogIn from '$lib/components/LogIn.svelte'; const user = userEvent.setup(); const mocks = vi.hoisted(() => ({ logIn: vi.fn(), })); describe('LogIn', async () => { beforeEach(async () => { render(LogIn, { logIn: mocks.logIn, }); }); it('sends a login request', async () => { const username = screen.getByLabelText('username'); await user.type(username, 'my username'); const password = screen.getByLabelText('password'); await user.type(password, 'my very creative and long password'); const signIn = screen.getByRole('button'); await user.click(signIn); expect(mocks.logIn).toHaveBeenCalledExactlyOnceWith( 'my username', 'my very creative and long password', ); }); });