diff --git a/tests/Views.test.ts b/tests/Views.test.ts new file mode 100644 index 0000000..f40f52c --- /dev/null +++ b/tests/Views.test.ts @@ -0,0 +1,40 @@ +import { render } from '@testing-library/svelte'; +import { describe, test, expect } from 'vitest'; +import { load } from '../src/routes/(angemeldet)/+layout.server'; +import Homepage from '../src/routes/(angemeldet)/+page.svelte'; + +describe('Homepage-View', () => { + test('Zeige Inhalt an wenn der Nutzer angemeldet ist', () => { + const fakeUser = { id: 'admin' }; + + const { getByText } = render(Homepage, { + props: { + data: { user: fakeUser } + } + }); + + expect(getByText('Benutzerverwaltung')).toBeInTheDocument(); + }); + + // [INFO] Benutzer (ohne Login) kann nicht auf diese Seite zugreifen + // entsprechender Test ist unten `Layout.Server Guard for Homepage-View` +}); + +describe('Layout.Server Guard fuer Homepage-View', () => { + test('Weiterleitung an /anmeldung wenn der Nutzer nicht authentifiziert ist', async () => { + const event = { + url: new URL('http://localhost'), + locals: { + user: null + } + }; + + try { + await load(event); + throw new Error('Expected redirect not thrown'); + } catch (err) { + expect(err.status).toBe(303); + expect(err.location).toBe('/anmeldung'); + } + }); +});