2 Commits

2 changed files with 41 additions and 1 deletions

40
tests/Views.test.ts Normal file
View File

@@ -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');
}
});
});

View File

@@ -13,7 +13,7 @@ export default defineConfig({
name: 'client',
environment: 'jsdom',
clearMocks: true,
include: ['src/**/*.svelte.{test,spec}.{js,ts}'],
include: ['tests/**/*.{test,spec}.{js,ts}', 'src/**/*.svelte.{test,spec}.{js,ts}'],
exclude: ['src/lib/server/**'],
setupFiles: ['./vitest-setup-client.ts']
}