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 () => {
const vorgangList = getVorgaenge();
return {
vorgangList
};

View File

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

View File

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

View File

@@ -1,34 +1,34 @@
import { render, screen, within } from '@testing-library/svelte';
import { describe, expect, it, test } from "vitest";
import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte";
import { describe, expect, it, test } from 'vitest';
import TatortListPage from '../src/routes/(token-based)/list/[vorgang]/+page.svelte';
import { baseData } from './fixtures';
describe('Seite: Vorgangsansicht', () => {
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)', () => {
it('zeigt Hinweistext bei leerer Liste', () => {
it('zeigt Hinweistext bei leerer Liste', () => {
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', () => {
const items = screen.queryAllByTestId('test-list-item');
it('zeigt keinen Listeneintrag', () => {
const items = screen.queryAllByTestId('test-list-item');
expect(items).toHaveLength(0);
});
});
});
describe('Szenario: Liste gefüllt (unabhängig von Rolle)', () => {
it('rendert mindestens ein Listenelement bei vorhandenen crimesList-Daten', () => {
const testData = { ...baseData };
const { queryAllByTestId } = render(TatortListPage, {props:{data: testData}});
const { queryAllByTestId } = render(TatortListPage, { props: { data: testData } });
const items = queryAllByTestId('test-list-item');
expect(items.length).toBeGreaterThan(0);
expect(items.length).toBeGreaterThan(0);
});
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('zeigt Dateigröße, wenn item.size vorhanden ist');
});
describe('Szenario: Admin + Liste gefüllt', () => {
const testData = { ...baseData, user: { ...baseData.user, admin: true }};
it('zeigt Listeneinträge mit Komponente NameItemEditor', () => {
const { getAllByTestId } = render(TatortListPage, {props:{data: testData}});
const testData = { ...baseData, user: { ...baseData.user, admin: true } };
it('zeigt Listeneinträge mit Komponente NameItemEditor', () => {
const { getAllByTestId } = render(TatortListPage, { props: { data: testData } });
const items = getAllByTestId('test-nameItemEditor');
expect(items.length).toBeGreaterThan(0);
});
});
test.todo('Modal testen, wenn open')
});
test.todo('Modal testen, wenn open');
});
describe('Szenario: Viewer + Liste gefüllt', () => {
const testData = { ...baseData, user: { ...baseData.user, admin: false }};
it('zeigt Listeneinträge mit p', () => {
const testData = { ...baseData, user: { ...baseData.user, admin: false } };
it('zeigt Listeneinträge mit p', () => {
render(TatortListPage, { props: { data: testData } });
const paragraphs = screen.queryAllByTestId('test-nameItem-p');
expect(paragraphs).toHaveLength(testData.crimesList.length);
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',
plugins: [svelteTesting()],
test: {
name: 'client-logic',
name: 'business-logic and API',
environment: 'jsdom',
clearMocks: true,
include: ['tests/**/*.{test,spec}.{js,ts}', 'src/**/*.svelte.{test,spec}.{js,ts}'],