9 Commits

Author SHA1 Message Date
3a6b10e860 deleted debug comments 2025-09-24 12:37:14 +02:00
0c05cf6661 Merge branch 'development' into f086_Zusatz-Edit-der-Namen 2025-09-24 12:35:53 +02:00
f4e1917357 Merge pull request 'f102_test_KeineListeVorhanden' (#33) from f102_test_KeineListeVorhanden into development
All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
Reviewed-on: #33
2025-09-24 10:01:56 +02:00
6f5176fcb9 chenge URL und baseData magic string in testData.name 2025-09-23 16:50:34 +02:00
67b027e33f formatting 2025-09-23 10:38:59 +02:00
961ed39615 formatting 2025-09-23 09:39:33 +02:00
90745e02d5 rename test description to match tests done 2025-09-23 09:36:46 +02:00
df24fcf7e8 formatting 2025-09-23 09:36:04 +02:00
02e05930f1 formatting 2025-09-23 09:14:33 +02:00
5 changed files with 25 additions and 31 deletions

View File

@@ -4,7 +4,6 @@ import type { PageServerLoad } from '../../(token-based)/view/$types';
export const load: PageServerLoad = async () => { export const load: PageServerLoad = async () => {
const vorgangList = getVorgaenge(); const vorgangList = getVorgaenge();
return { return {
vorgangList vorgangList
}; };

View File

@@ -27,7 +27,6 @@
} }
let crimesList = $state<ListItem[]>(data.crimesList); let crimesList = $state<ListItem[]>(data.crimesList);
$inspect('debug Edit', crimesList);
let vorgangName: string = data.vorgang.vorgangName; let vorgangName: string = data.vorgang.vorgangName;
const vorgangPIN: string = data.vorgang.vorgangPIN; const vorgangPIN: string = data.vorgang.vorgangPIN;
let vorgangToken: string = data.vorgang.vorgangToken; let vorgangToken: string = data.vorgang.vorgangToken;
@@ -38,14 +37,12 @@
let inProgress = $state(false); let inProgress = $state(false);
let isError = $state(false); let isError = $state(false);
let admin = $state(data?.user?.admin); let admin = data?.user?.admin;
async function handleSave(newName: string, oldName: string) { async function handleSave(newName: string, oldName: string) {
open = true; open = true;
inProgress = true; inProgress = true;
isError = false; isError = false;
console.log('debug handleSave', newName, oldName);
try { try {
const res = await fetch(`/api/list/${vorgangToken}/${oldName}`, { const res = await fetch(`/api/list/${vorgangToken}/${oldName}`, {
method: 'PUT', method: 'PUT',

View File

@@ -25,7 +25,7 @@ describe('API-Endpoints: list', () => {
expect(response.status).toBe(401); expect(response.status).toBe(401);
const json = await response.json(); const json = await response.json();
const errorObj = { error: 'Unauthorized' } const errorObj = { error: 'Unauthorized' };
expect(json).toEqual(errorObj); expect(json).toEqual(errorObj);
}); });

View File

@@ -1,34 +1,34 @@
import { render, screen, within } from '@testing-library/svelte'; import { render, screen, within } from '@testing-library/svelte';
import { describe, expect, it, test } from "vitest"; import { describe, expect, it, test } from 'vitest';
import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte"; import TatortListPage from '../src/routes/(token-based)/list/[vorgang]/+page.svelte';
import { baseData } from './fixtures'; import { baseData } from './fixtures';
describe('Seite: Vorgangsansicht', () => { describe('Seite: Vorgangsansicht', () => {
test.todo('zeigt PIN und Share-Link, wenn Admin'); test.todo('zeigt PIN und Share-Link, wenn Admin');
test.todo('zeigt PIN und Share-Link disabeld, wenn Liste leer') test.todo('zeigt PIN und Share-Link disabeld, wenn Liste leer');
describe('Szenario: Liste leer (unabhängig von Rolle)', () => { describe('Szenario: Liste leer (unabhängig von Rolle)', () => {
it('zeigt Hinweistext bei leerer Liste', () => { it('zeigt Hinweistext bei leerer Liste', () => {
const testData = { ...baseData, crimesList: [] }; const testData = { ...baseData, crimesList: [] };
const { getByTestId } = render(TatortListPage, {props:{data: testData}}); const { getByTestId } = render(TatortListPage, { props: { data: testData } });
expect(getByTestId('empty-list')).toBeInTheDocument(); expect(getByTestId('empty-list')).toBeInTheDocument();
}); });
it('zeigt keinen Listeneintrag', () => { it('zeigt keinen Listeneintrag', () => {
const items = screen.queryAllByTestId('test-list-item'); const items = screen.queryAllByTestId('test-list-item');
expect(items).toHaveLength(0); expect(items).toHaveLength(0);
}); });
}); });
describe('Szenario: Liste gefüllt (unabhängig von Rolle)', () => { describe('Szenario: Liste gefüllt (unabhängig von Rolle)', () => {
it('rendert mindestens ein Listenelement bei vorhandenen crimesList-Daten', () => { it('rendert mindestens ein Listenelement bei vorhandenen crimesList-Daten', () => {
const testData = { ...baseData }; const testData = { ...baseData };
const { queryAllByTestId } = render(TatortListPage, {props:{data: testData}}); const { queryAllByTestId } = render(TatortListPage, { props: { data: testData } });
const items = queryAllByTestId('test-list-item'); const items = queryAllByTestId('test-list-item');
expect(items.length).toBeGreaterThan(0); expect(items.length).toBeGreaterThan(0);
}); });
it('zeigt für jeden Eintrag einen Link', () => { it('zeigt für jeden Eintrag einen Link', () => {
@@ -54,36 +54,34 @@ describe('Seite: Vorgangsansicht', () => {
}); });
}); });
test.todo('testet zuletzt angezeigt, wenn item.lastModified'); test.todo('testet zuletzt angezeigt, wenn item.lastModified');
test.todo('zeigt Dateigröße, wenn item.size vorhanden ist'); test.todo('zeigt Dateigröße, wenn item.size vorhanden ist');
}); });
describe('Szenario: Admin + Liste gefüllt', () => { describe('Szenario: Admin + Liste gefüllt', () => {
const testData = { ...baseData, user: { ...baseData.user, admin: true }}; const testData = { ...baseData, user: { ...baseData.user, admin: true } };
it('zeigt Listeneinträge mit Komponente NameItemEditor', () => { it('zeigt Listeneinträge mit Komponente NameItemEditor', () => {
const { getAllByTestId } = render(TatortListPage, {props:{data: testData}}); const { getAllByTestId } = render(TatortListPage, { props: { data: testData } });
const items = getAllByTestId('test-nameItemEditor'); const items = getAllByTestId('test-nameItemEditor');
expect(items.length).toBeGreaterThan(0); expect(items.length).toBeGreaterThan(0);
}); });
test.todo('Modal testen, wenn open') test.todo('Modal testen, wenn open');
}); });
describe('Szenario: Viewer + Liste gefüllt', () => { describe('Szenario: Viewer + Liste gefüllt', () => {
const testData = { ...baseData, user: { ...baseData.user, admin: false }}; const testData = { ...baseData, user: { ...baseData.user, admin: false } };
it('zeigt Listeneinträge mit p', () => { it('zeigt Listeneinträge mit p', () => {
render(TatortListPage, { props: { data: testData } }); render(TatortListPage, { props: { data: testData } });
const paragraphs = screen.queryAllByTestId('test-nameItem-p'); const paragraphs = screen.queryAllByTestId('test-nameItem-p');
expect(paragraphs).toHaveLength(testData.crimesList.length); expect(paragraphs).toHaveLength(testData.crimesList.length);
paragraphs.forEach((p, i) => { paragraphs.forEach((p, i) => {
expect(p).toHaveTextContent(testData.crimesList[i].name); expect(p).toHaveTextContent(testData.crimesList[i].name);
}); });
}); });
test.todo('zeigt keinen Share-Link oder PIN') test.todo('zeigt keinen Share-Link oder PIN');
}); });
}); });

View File

@@ -10,7 +10,7 @@ export default defineConfig({
extends: './vite.config.ts', extends: './vite.config.ts',
plugins: [svelteTesting()], plugins: [svelteTesting()],
test: { test: {
name: 'client-logic', name: 'business-logic and API',
environment: 'jsdom', environment: 'jsdom',
clearMocks: true, clearMocks: true,
include: ['tests/**/*.{test,spec}.{js,ts}', 'src/**/*.svelte.{test,spec}.{js,ts}'], include: ['tests/**/*.{test,spec}.{js,ts}', 'src/**/*.svelte.{test,spec}.{js,ts}'],