diff --git a/frontend/src/routes/AuthHeader.svelte.test.ts b/frontend/src/routes/AuthHeader.svelte.test.ts new file mode 100644 index 00000000..67c23479 --- /dev/null +++ b/frontend/src/routes/AuthHeader.svelte.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import AuthHeader from './AuthHeader.svelte'; + +afterEach(cleanup); + +describe('AuthHeader', () => { + it('renders the brand link to /', async () => { + render(AuthHeader, { props: {} }); + + await expect + .element(page.getByRole('link', { name: /familienarchiv/i })) + .toHaveAttribute('href', '/'); + }); + + it('renders the brand wordmark', async () => { + render(AuthHeader, { props: {} }); + + await expect.element(page.getByText('Familienarchiv')).toBeVisible(); + }); +}); diff --git a/frontend/src/routes/admin/groups/page.svelte.test.ts b/frontend/src/routes/admin/groups/page.svelte.test.ts new file mode 100644 index 00000000..fa205e14 --- /dev/null +++ b/frontend/src/routes/admin/groups/page.svelte.test.ts @@ -0,0 +1,14 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import AdminGroupsIndexPage from './+page.svelte'; + +afterEach(cleanup); + +describe('admin/groups index page', () => { + it('renders the select-from-list prompt', async () => { + render(AdminGroupsIndexPage, { props: {} }); + + await expect.element(page.getByText('Wähle eine Gruppe aus der Liste.')).toBeVisible(); + }); +}); diff --git a/frontend/src/routes/admin/tags/page.svelte.test.ts b/frontend/src/routes/admin/tags/page.svelte.test.ts new file mode 100644 index 00000000..f6d4b7ab --- /dev/null +++ b/frontend/src/routes/admin/tags/page.svelte.test.ts @@ -0,0 +1,14 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import AdminTagsIndexPage from './+page.svelte'; + +afterEach(cleanup); + +describe('admin/tags index page', () => { + it('renders the select-from-list prompt', async () => { + render(AdminTagsIndexPage, { props: {} }); + + await expect.element(page.getByText('Wähle ein Schlagwort aus der Liste.')).toBeVisible(); + }); +}); diff --git a/frontend/src/routes/admin/users/page.svelte.test.ts b/frontend/src/routes/admin/users/page.svelte.test.ts new file mode 100644 index 00000000..750b7100 --- /dev/null +++ b/frontend/src/routes/admin/users/page.svelte.test.ts @@ -0,0 +1,14 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import AdminUsersIndexPage from './+page.svelte'; + +afterEach(cleanup); + +describe('admin/users index page', () => { + it('renders the select-from-list prompt', async () => { + render(AdminUsersIndexPage, { props: {} }); + + await expect.element(page.getByText('Wähle einen Benutzer aus der Liste.')).toBeVisible(); + }); +}); diff --git a/frontend/src/routes/persons/PersonsEmptyState.svelte.test.ts b/frontend/src/routes/persons/PersonsEmptyState.svelte.test.ts new file mode 100644 index 00000000..1df726cb --- /dev/null +++ b/frontend/src/routes/persons/PersonsEmptyState.svelte.test.ts @@ -0,0 +1,15 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import PersonsEmptyState from './PersonsEmptyState.svelte'; + +afterEach(cleanup); + +describe('PersonsEmptyState', () => { + it('renders the empty heading and explanation text', async () => { + render(PersonsEmptyState, { props: {} }); + + await expect.element(page.getByText('Keine Personen gefunden.')).toBeVisible(); + await expect.element(page.getByText('Versuchen Sie einen anderen Suchbegriff.')).toBeVisible(); + }); +});