From edb37d81173fec10f3c99d79a8b1335282cbc9c6 Mon Sep 17 00:00:00 2001 From: mina Date: Thu, 4 Sep 2025 19:07:43 +0200 Subject: [PATCH 01/11] implement test View Leere Liste in TatortListe --- package-lock.json | 27 +++------- package.json | 4 +- src/lib/components/EmptyList.svelte | 4 +- .../(token-based)/list/[vorgang]/+page.svelte | 2 +- tests/APIList.test.ts | 2 +- tests/TatortList.view.test.ts | 53 +++++++++++++++++++ vite.config.ts | 16 +++++- 7 files changed, 80 insertions(+), 28 deletions(-) create mode 100644 tests/TatortList.view.test.ts diff --git a/package-lock.json b/package-lock.json index cc927f9..247e806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.21.3", "@sveltejs/vite-plugin-svelte": "^5.1.0", - "@testing-library/jest-dom": "^6.6.3", + "@testing-library/jest-dom": "^6.8.0", "@testing-library/svelte": "^5.2.8", "@tsconfig/svelte": "^5.0.4", "@types/better-sqlite3": "^7.6.13", @@ -45,7 +45,7 @@ "typescript": "^5.8.3", "typescript-eslint": "^8.34.0", "vite": "^6.3.5", - "vitest": "^3.2.3" + "vitest": "^3.2.4" } }, "node_modules/@adobe/css-tools": { @@ -1665,18 +1665,17 @@ "license": "MIT" }, "node_modules/@testing-library/jest-dom": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.8.0.tgz", + "integrity": "sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==", "dev": true, "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { @@ -2830,20 +2829,6 @@ "node": ">=18" } }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", diff --git a/package.json b/package.json index 4742a0c..1a689a0 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.21.3", "@sveltejs/vite-plugin-svelte": "^5.1.0", - "@testing-library/jest-dom": "^6.6.3", + "@testing-library/jest-dom": "^6.8.0", "@testing-library/svelte": "^5.2.8", "@tsconfig/svelte": "^5.0.4", "@types/better-sqlite3": "^7.6.13", @@ -40,7 +40,7 @@ "typescript": "^5.8.3", "typescript-eslint": "^8.34.0", "vite": "^6.3.5", - "vitest": "^3.2.3" + "vitest": "^3.2.4" }, "dependencies": { "@google/model-viewer": "^4.1.0", diff --git a/src/lib/components/EmptyList.svelte b/src/lib/components/EmptyList.svelte index 121f6ec..b28b363 100644 --- a/src/lib/components/EmptyList.svelte +++ b/src/lib/components/EmptyList.svelte @@ -1 +1,3 @@ -

In dieser Liste sind keine Einträge vorhanden

+

+ In dieser Liste sind keine Einträge vorhanden +

diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index b825977..f7ded18 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -159,7 +159,7 @@ Mit freundlichen Grüßen, {:else} {#each data.crimesList as item, crimeListItemIndex} -
  • +
  • { const json = await response.json(); expect(json).toEqual(testVorgaenge); }); -}); \ No newline at end of file +}); diff --git a/tests/TatortList.view.test.ts b/tests/TatortList.view.test.ts new file mode 100644 index 0000000..0cee4e5 --- /dev/null +++ b/tests/TatortList.view.test.ts @@ -0,0 +1,53 @@ +import { render } from '@testing-library/svelte'; +import { describe, expect, it } from "vitest"; +import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte"; + + +const testCrimesList = [ + { + name: 'model-A', + lastModified: '2025-08-28T09:44:12.453Z', + etag: '558f35716f6af953f9bb5d75f6d77e6a', + size: 8947140, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + }, + { + name: 'model-z', + lastModified: '2025-08-28T10:37:20.142Z', + etag: '43e3989c32c4682bee407baaf83b6fa0', + size: 35788560, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + } + ]; +const baseData = { + user: {admin: true, id: 'admin'}, + vorgang: { + + }, + vorgangList: [], + crimesList: testCrimesList, + url: URL, + crimeNames: [], + +} + +describe('Tatort Liste Page', ()=>{ + //Hier steht die funktion die getestet wird + it('zeigt EmptyList-Komponente, wenn Liste leer ist', () => { + const testData = { ...baseData, crimesList: [] }; + const { getByTestId } = render(TatortListPage, {props:{data: testData}}); + + + expect(getByTestId('empty-list')).toBeInTheDocument(); + }); + + it('zeigt EmptyList-Komponente, wenn Liste vorhanden ist', () => { + const testData = { ...baseData }; + const { getAllByTestId } = render(TatortListPage, {props:{data: testData}}); +const items = getAllByTestId('test-list-item'); + + expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat + }); +}) diff --git a/vite.config.ts b/vite.config.ts index e0b01d9..cf13f0e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,15 +5,27 @@ import { defineConfig } from 'vite'; export default defineConfig({ plugins: [sveltekit()], test: { - workspace: [ + projects: [ { extends: './vite.config.ts', plugins: [svelteTesting()], test: { - name: 'client', + name: 'client-logic', environment: 'jsdom', clearMocks: true, include: ['tests/**/*.{test,spec}.{js,ts}', 'src/**/*.svelte.{test,spec}.{js,ts}'], + exclude: ['src/lib/server/**', 'tests/**/*.view.{test,spec}.{js,ts}'], + setupFiles: ['./vitest-setup-client.ts'] + } + }, + { + extends: './vite.config.ts', + plugins: [svelteTesting()], + test: { + name: 'client-view', + environment: 'jsdom', + clearMocks: true, + include: ['tests/**/*.view.{test,spec}.{js,ts}', 'src/**/*.view.svelte.{test,spec}.{js,ts}'], exclude: ['src/lib/server/**'], setupFiles: ['./vitest-setup-client.ts'] } From fedc781d74b236f61c9f62932a2a106c26b4519c Mon Sep 17 00:00:00 2001 From: mina Date: Fri, 5 Sep 2025 14:37:19 +0200 Subject: [PATCH 02/11] implement test VorgangList view --- src/routes/(angemeldet)/list/+page.server.ts | 1 + src/routes/(angemeldet)/list/+page.svelte | 5 +- .../(token-based)/list/[vorgang]/+page.svelte | 2 +- tests/VorgangsList.view.test.ts | 69 +++++++++++++++++++ 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 tests/VorgangsList.view.test.ts diff --git a/src/routes/(angemeldet)/list/+page.server.ts b/src/routes/(angemeldet)/list/+page.server.ts index 2053a67..8107f80 100644 --- a/src/routes/(angemeldet)/list/+page.server.ts +++ b/src/routes/(angemeldet)/list/+page.server.ts @@ -4,6 +4,7 @@ import type { PageServerLoad } from '../../(token-based)/view/$types'; export const load: PageServerLoad = async () => { const vorgangList = getVorgaenge(); + return { vorgangList }; diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index 887096d..bb2e973 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -2,10 +2,9 @@ import Trash from '$lib/icons/Trash.svelte'; import Folder from '$lib/icons/Folder.svelte'; import EmptyList from '$lib/components/EmptyList.svelte'; - import type { PageData } from '../$types'; - // let { data } = $props(); - export let data: PageData; + let { data } = $props(); + let vorgangList = data.vorgangList; let isEmptyList = vorgangList.length === 0; diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index f7ded18..2893b11 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -9,7 +9,7 @@ import ModalContent from '$lib/components/Modal/ModalContent.svelte'; import ModalFooter from '$lib/components/Modal/ModalFooter.svelte'; import Cube from '$lib/icons/Cube.svelte'; - import { invalidate, invalidateAll } from '$app/navigation'; + import { invalidateAll } from '$app/navigation'; import NameItemEditor from '$lib/components/NameItemEditor.svelte'; import EmptyList from '$lib/components/EmptyList.svelte'; diff --git a/tests/VorgangsList.view.test.ts b/tests/VorgangsList.view.test.ts new file mode 100644 index 0000000..fd039c9 --- /dev/null +++ b/tests/VorgangsList.view.test.ts @@ -0,0 +1,69 @@ +import { render } from '@testing-library/svelte'; +import { describe, expect, it } from "vitest"; +import VorgangsListPage from '../src/routes/(angemeldet)/list/+page.svelte'; +const testUser = { + admin: true, +exp: 1757067123, +iat: 1757063523, +id: "admin", +} +const testCrimesList = [ + { + name: 'model-A', + lastModified: '2025-08-28T09:44:12.453Z', + etag: '558f35716f6af953f9bb5d75f6d77e6a', + size: 8947140, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + }, + { + name: 'model-z', + lastModified: '2025-08-28T10:37:20.142Z', + etag: '43e3989c32c4682bee407baaf83b6fa0', + size: 35788560, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + } + ]; + +const testVorgangsList = [ + { +vorgangName: "vorgang-1", +vorgangPIN: "pin-123", +vorgangToken: "c322f26f-8c5e-4cb9-94b3-b5433bf5109e" + }, + { +vorgangName: "vorgang-2", +vorgangPIN: "pin-2", +vorgangToken: "cb0051bc-5f38-47b8-943c-9352d4d9c984" + } + +] + +const baseData = { + user: testUser, + vorgang: testVorgangsList[0], + vorgangList: testVorgangsList, + crimesList: testCrimesList, + url: URL, + crimeNames: [ "modell-A" ], + +} + +describe('Vorgänge Liste Page', ()=>{ + //Hier steht die funktion die getestet wird + it('zeigt EmptyList-Komponente, wenn Liste leer ist', () => { + const testData = { ...baseData, vorgangList: [] }; + const { getByTestId } = render(VorgangsListPage, {props:{data: testData}}); + + expect(getByTestId('empty-list')).toBeInTheDocument(); + }); + + it('zeigt EmptyList-Komponente, wenn Liste vorhanden ist', () => { + const testData = { ...baseData }; + const { getAllByTestId } = render(VorgangsListPage, {props:{data: testData}}); +const items = getAllByTestId('test-list-item'); + + expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat + }); +}) From 7c20aa08b4ed9e8b8d3cbbdb6225d93bd65adf18 Mon Sep 17 00:00:00 2001 From: mina Date: Fri, 5 Sep 2025 14:45:51 +0200 Subject: [PATCH 03/11] add tetId now tests client-view all passed --- src/routes/(angemeldet)/list/+page.svelte | 2 +- tests/{VorgangsList.view.test.ts => VorgangList.view.test.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/{VorgangsList.view.test.ts => VorgangList.view.test.ts} (100%) diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index bb2e973..713323e 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -47,7 +47,7 @@ {:else} {#each vorgangList as vorgangItem} -
  • +
  • Date: Fri, 5 Sep 2025 14:50:35 +0200 Subject: [PATCH 04/11] change VorgangsListPage in VorgangListPage --- tests/VorgangList.view.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/VorgangList.view.test.ts b/tests/VorgangList.view.test.ts index fd039c9..67e792d 100644 --- a/tests/VorgangList.view.test.ts +++ b/tests/VorgangList.view.test.ts @@ -1,6 +1,6 @@ import { render } from '@testing-library/svelte'; import { describe, expect, it } from "vitest"; -import VorgangsListPage from '../src/routes/(angemeldet)/list/+page.svelte'; +import VorgangListPage from '../src/routes/(angemeldet)/list/+page.svelte'; const testUser = { admin: true, exp: 1757067123, @@ -54,16 +54,16 @@ describe('Vorgänge Liste Page', ()=>{ //Hier steht die funktion die getestet wird it('zeigt EmptyList-Komponente, wenn Liste leer ist', () => { const testData = { ...baseData, vorgangList: [] }; - const { getByTestId } = render(VorgangsListPage, {props:{data: testData}}); + const { getByTestId } = render(VorgangListPage, {props:{data: testData}}); expect(getByTestId('empty-list')).toBeInTheDocument(); }); it('zeigt EmptyList-Komponente, wenn Liste vorhanden ist', () => { const testData = { ...baseData }; - const { getAllByTestId } = render(VorgangsListPage, {props:{data: testData}}); + const { getAllByTestId } = render(VorgangListPage, {props:{data: testData}}); const items = getAllByTestId('test-list-item'); - expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat + expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat }); }) From 14509fdffe4a3d9ed387e13edfe39f049f609fb2 Mon Sep 17 00:00:00 2001 From: mina Date: Fri, 5 Sep 2025 14:58:26 +0200 Subject: [PATCH 05/11] =?UTF-8?q?kleine=20=C3=84nderungen,=20copied=20base?= =?UTF-8?q?Data,=20change=20names=20of=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/TatortList.view.test.ts | 42 ++++++++++++++++++++++++---------- tests/VorgangList.view.test.ts | 9 ++++---- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/tests/TatortList.view.test.ts b/tests/TatortList.view.test.ts index 0cee4e5..61dd68c 100644 --- a/tests/TatortList.view.test.ts +++ b/tests/TatortList.view.test.ts @@ -2,7 +2,12 @@ import { render } from '@testing-library/svelte'; import { describe, expect, it } from "vitest"; import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte"; - +const testUser = { + admin: true, +exp: 1757067123, +iat: 1757063523, +id: "admin", +} const testCrimesList = [ { name: 'model-A', @@ -21,21 +26,34 @@ const testCrimesList = [ show_button: true } ]; -const baseData = { - user: {admin: true, id: 'admin'}, - vorgang: { - }, - vorgangList: [], +const testVorgangsList = [ + { +vorgangName: "vorgang-1", +vorgangPIN: "pin-123", +vorgangToken: "c322f26f-8c5e-4cb9-94b3-b5433bf5109e" + }, + { +vorgangName: "vorgang-2", +vorgangPIN: "pin-2", +vorgangToken: "cb0051bc-5f38-47b8-943c-9352d4d9c984" + } + +] + +const baseData = { + user: testUser, + vorgang: testVorgangsList[0], + vorgangList: testVorgangsList, crimesList: testCrimesList, url: URL, - crimeNames: [], + crimeNames: [ "modell-A" ], } -describe('Tatort Liste Page', ()=>{ - //Hier steht die funktion die getestet wird - it('zeigt EmptyList-Komponente, wenn Liste leer ist', () => { +describe('Tatort Liste Page EmptyList-Komponente View', ()=>{ + + it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { const testData = { ...baseData, crimesList: [] }; const { getByTestId } = render(TatortListPage, {props:{data: testData}}); @@ -43,11 +61,11 @@ describe('Tatort Liste Page', ()=>{ expect(getByTestId('empty-list')).toBeInTheDocument(); }); - it('zeigt EmptyList-Komponente, wenn Liste vorhanden ist', () => { + it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { const testData = { ...baseData }; const { getAllByTestId } = render(TatortListPage, {props:{data: testData}}); const items = getAllByTestId('test-list-item'); - expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat + expect(items).toHaveLength(2); }); }) diff --git a/tests/VorgangList.view.test.ts b/tests/VorgangList.view.test.ts index 67e792d..13f6480 100644 --- a/tests/VorgangList.view.test.ts +++ b/tests/VorgangList.view.test.ts @@ -50,20 +50,19 @@ const baseData = { } -describe('Vorgänge Liste Page', ()=>{ - //Hier steht die funktion die getestet wird - it('zeigt EmptyList-Komponente, wenn Liste leer ist', () => { +describe('Vorgänge Liste Page EmptyList-Komponente View', ()=>{ + it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { const testData = { ...baseData, vorgangList: [] }; const { getByTestId } = render(VorgangListPage, {props:{data: testData}}); expect(getByTestId('empty-list')).toBeInTheDocument(); }); - it('zeigt EmptyList-Komponente, wenn Liste vorhanden ist', () => { + it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { const testData = { ...baseData }; const { getAllByTestId } = render(VorgangListPage, {props:{data: testData}}); const items = getAllByTestId('test-list-item'); - expect(items).toHaveLength(2); // z. B. bei 2 Einträgen, da fake 2 Einträge hat + expect(items).toHaveLength(2); }); }) From 02e05930f1293b0d037744a5bf514df1d7f9f95d Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 23 Sep 2025 09:14:33 +0200 Subject: [PATCH 06/11] formatting --- src/routes/(angemeldet)/list/+page.server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/(angemeldet)/list/+page.server.ts b/src/routes/(angemeldet)/list/+page.server.ts index 8107f80..2053a67 100644 --- a/src/routes/(angemeldet)/list/+page.server.ts +++ b/src/routes/(angemeldet)/list/+page.server.ts @@ -4,7 +4,6 @@ import type { PageServerLoad } from '../../(token-based)/view/$types'; export const load: PageServerLoad = async () => { const vorgangList = getVorgaenge(); - return { vorgangList }; From df24fcf7e8a27b0be8c1d0a6015a86c02d521f92 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 23 Sep 2025 09:36:04 +0200 Subject: [PATCH 07/11] formatting --- tests/APIList.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/APIList.test.ts b/tests/APIList.test.ts index ba73767..e3d1fdf 100644 --- a/tests/APIList.test.ts +++ b/tests/APIList.test.ts @@ -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); }); From 90745e02d54cf7c8f8a3fa0804c92779ec44ddab Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 23 Sep 2025 09:36:46 +0200 Subject: [PATCH 08/11] rename test description to match tests done --- vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index cf13f0e..00ea90c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -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}'], From 961ed396156453d952368db8891b237c94b61a2e Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 23 Sep 2025 09:39:33 +0200 Subject: [PATCH 09/11] formatting --- tests/VorgangList.view.test.ts | 110 ++++++++++++++++----------------- 1 file changed, 54 insertions(+), 56 deletions(-) diff --git a/tests/VorgangList.view.test.ts b/tests/VorgangList.view.test.ts index 13f6480..f1187dc 100644 --- a/tests/VorgangList.view.test.ts +++ b/tests/VorgangList.view.test.ts @@ -1,68 +1,66 @@ import { render } from '@testing-library/svelte'; -import { describe, expect, it } from "vitest"; +import { describe, expect, it } from 'vitest'; import VorgangListPage from '../src/routes/(angemeldet)/list/+page.svelte'; const testUser = { - admin: true, -exp: 1757067123, -iat: 1757063523, -id: "admin", -} + admin: true, + exp: 1757067123, + iat: 1757063523, + id: 'admin' +}; const testCrimesList = [ - { - name: 'model-A', - lastModified: '2025-08-28T09:44:12.453Z', - etag: '558f35716f6af953f9bb5d75f6d77e6a', - size: 8947140, - prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', - show_button: true - }, - { - name: 'model-z', - lastModified: '2025-08-28T10:37:20.142Z', - etag: '43e3989c32c4682bee407baaf83b6fa0', - size: 35788560, - prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', - show_button: true - } - ]; + { + name: 'model-A', + lastModified: '2025-08-28T09:44:12.453Z', + etag: '558f35716f6af953f9bb5d75f6d77e6a', + size: 8947140, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + }, + { + name: 'model-z', + lastModified: '2025-08-28T10:37:20.142Z', + etag: '43e3989c32c4682bee407baaf83b6fa0', + size: 35788560, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + } +]; const testVorgangsList = [ - { -vorgangName: "vorgang-1", -vorgangPIN: "pin-123", -vorgangToken: "c322f26f-8c5e-4cb9-94b3-b5433bf5109e" - }, - { -vorgangName: "vorgang-2", -vorgangPIN: "pin-2", -vorgangToken: "cb0051bc-5f38-47b8-943c-9352d4d9c984" - } - -] + { + vorgangName: 'vorgang-1', + vorgangPIN: 'pin-123', + vorgangToken: 'c322f26f-8c5e-4cb9-94b3-b5433bf5109e' + }, + { + vorgangName: 'vorgang-2', + vorgangPIN: 'pin-2', + vorgangToken: 'cb0051bc-5f38-47b8-943c-9352d4d9c984' + } +]; const baseData = { - user: testUser, - vorgang: testVorgangsList[0], - vorgangList: testVorgangsList, - crimesList: testCrimesList, - url: URL, - crimeNames: [ "modell-A" ], + user: testUser, + vorgang: testVorgangsList[0], + vorgangList: testVorgangsList, + crimesList: testCrimesList, + url: URL, + crimeNames: ['modell-A'] +}; -} +describe('Vorgänge Liste Page EmptyList-Komponente View', () => { + it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { + const testData = { ...baseData, vorgangList: [] }; + const { getByTestId } = render(VorgangListPage, { props: { data: testData } }); -describe('Vorgänge Liste Page EmptyList-Komponente View', ()=>{ - it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { - const testData = { ...baseData, vorgangList: [] }; - const { getByTestId } = render(VorgangListPage, {props:{data: testData}}); + expect(getByTestId('empty-list')).toBeInTheDocument(); + }); - expect(getByTestId('empty-list')).toBeInTheDocument(); - }); + it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { + const testData = { ...baseData }; + const { getAllByTestId } = render(VorgangListPage, { props: { data: testData } }); + const items = getAllByTestId('test-list-item'); - it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { - const testData = { ...baseData }; - const { getAllByTestId } = render(VorgangListPage, {props:{data: testData}}); -const items = getAllByTestId('test-list-item'); - - expect(items).toHaveLength(2); - }); -}) + expect(items).toHaveLength(2); + }); +}); From 67b027e33f4fc6a9f4ef4a44b149aa992a51bcfd Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 23 Sep 2025 10:38:59 +0200 Subject: [PATCH 10/11] formatting --- tests/TatortList.view.test.ts | 114 ++++++++++++++++------------------ 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/tests/TatortList.view.test.ts b/tests/TatortList.view.test.ts index 61dd68c..85f27ce 100644 --- a/tests/TatortList.view.test.ts +++ b/tests/TatortList.view.test.ts @@ -1,71 +1,67 @@ import { render } from '@testing-library/svelte'; -import { describe, expect, it } from "vitest"; -import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte"; +import { describe, expect, it } from 'vitest'; +import TatortListPage from '../src/routes/(token-based)/list/[vorgang]/+page.svelte'; const testUser = { - admin: true, -exp: 1757067123, -iat: 1757063523, -id: "admin", -} + admin: true, + exp: 1757067123, + iat: 1757063523, + id: 'admin' +}; const testCrimesList = [ - { - name: 'model-A', - lastModified: '2025-08-28T09:44:12.453Z', - etag: '558f35716f6af953f9bb5d75f6d77e6a', - size: 8947140, - prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', - show_button: true - }, - { - name: 'model-z', - lastModified: '2025-08-28T10:37:20.142Z', - etag: '43e3989c32c4682bee407baaf83b6fa0', - size: 35788560, - prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', - show_button: true - } - ]; + { + name: 'model-A', + lastModified: '2025-08-28T09:44:12.453Z', + etag: '558f35716f6af953f9bb5d75f6d77e6a', + size: 8947140, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + }, + { + name: 'model-z', + lastModified: '2025-08-28T10:37:20.142Z', + etag: '43e3989c32c4682bee407baaf83b6fa0', + size: 35788560, + prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc', + show_button: true + } +]; const testVorgangsList = [ - { -vorgangName: "vorgang-1", -vorgangPIN: "pin-123", -vorgangToken: "c322f26f-8c5e-4cb9-94b3-b5433bf5109e" - }, - { -vorgangName: "vorgang-2", -vorgangPIN: "pin-2", -vorgangToken: "cb0051bc-5f38-47b8-943c-9352d4d9c984" - } - -] + { + vorgangName: 'vorgang-1', + vorgangPIN: 'pin-123', + vorgangToken: 'c322f26f-8c5e-4cb9-94b3-b5433bf5109e' + }, + { + vorgangName: 'vorgang-2', + vorgangPIN: 'pin-2', + vorgangToken: 'cb0051bc-5f38-47b8-943c-9352d4d9c984' + } +]; const baseData = { - user: testUser, - vorgang: testVorgangsList[0], - vorgangList: testVorgangsList, - crimesList: testCrimesList, - url: URL, - crimeNames: [ "modell-A" ], + user: testUser, + vorgang: testVorgangsList[0], + vorgangList: testVorgangsList, + crimesList: testCrimesList, + url: URL, + crimeNames: ['modell-A'] +}; -} +describe('Tatort Liste Page EmptyList-Komponente View', () => { + it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { + const testData = { ...baseData, crimesList: [] }; + const { getByTestId } = render(TatortListPage, { props: { data: testData } }); -describe('Tatort Liste Page EmptyList-Komponente View', ()=>{ + expect(getByTestId('empty-list')).toBeInTheDocument(); + }); - it('zeigt EmptyList-Komponente an, wenn Liste leer ist', () => { - const testData = { ...baseData, crimesList: [] }; - const { getByTestId } = render(TatortListPage, {props:{data: testData}}); + it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { + const testData = { ...baseData }; + const { getAllByTestId } = render(TatortListPage, { props: { data: testData } }); + const items = getAllByTestId('test-list-item'); - - expect(getByTestId('empty-list')).toBeInTheDocument(); - }); - - it('zeigt Liste(min. 1 li-Element) an, wenn Liste vorhanden ist', () => { - const testData = { ...baseData }; - const { getAllByTestId } = render(TatortListPage, {props:{data: testData}}); -const items = getAllByTestId('test-list-item'); - - expect(items).toHaveLength(2); - }); -}) + expect(items).toHaveLength(2); + }); +}); From 6f5176fcb99aea16ff30cd255ac90d88a7366fb5 Mon Sep 17 00:00:00 2001 From: mina Date: Tue, 23 Sep 2025 16:50:34 +0200 Subject: [PATCH 11/11] chenge URL und baseData magic string in testData.name --- tests/TatortList.view.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/TatortList.view.test.ts b/tests/TatortList.view.test.ts index 85f27ce..5c0e9dd 100644 --- a/tests/TatortList.view.test.ts +++ b/tests/TatortList.view.test.ts @@ -45,8 +45,8 @@ const baseData = { vorgang: testVorgangsList[0], vorgangList: testVorgangsList, crimesList: testCrimesList, - url: URL, - crimeNames: ['modell-A'] + url: 'https://www.google.com', + crimeNames: [testCrimesList[0].name] }; describe('Tatort Liste Page EmptyList-Komponente View', () => {