add conditional route and crimeList View refactoring + tests
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
import { invalidateAll } from '$app/navigation';
|
import { invalidateAll } from '$app/navigation';
|
||||||
import NameItemEditor from '$lib/components/NameItemEditor.svelte';
|
import NameItemEditor from '$lib/components/NameItemEditor.svelte';
|
||||||
import EmptyList from '$lib/components/EmptyList.svelte';
|
import EmptyList from '$lib/components/EmptyList.svelte';
|
||||||
|
import { ROUTE_NAMES } from '../../../index.js';
|
||||||
|
|
||||||
//Seite für die Tatort-Liste
|
//Seite für die Tatort-Liste
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
@@ -144,7 +145,7 @@ Mit freundlichen Grüßen,
|
|||||||
<div class=" flex gap-x-4">
|
<div class=" flex gap-x-4">
|
||||||
<a
|
<a
|
||||||
data-testid="crime-link"
|
data-testid="crime-link"
|
||||||
href="/view/{vorgangToken}/{item.name}?pin={vorgangPIN}"
|
href="{ROUTE_NAMES.CRIME(vorgangToken, item.name, vorgangPIN)}"
|
||||||
class=" flex justify-between gap-x-6 py-5"
|
class=" flex justify-between gap-x-6 py-5"
|
||||||
aria-label="/view/{vorgangToken}/{item.name}?pin={vorgangPIN}"
|
aria-label="/view/{vorgangToken}/{item.name}?pin={vorgangPIN}"
|
||||||
title={item.name}
|
title={item.name}
|
||||||
|
|||||||
@@ -7,10 +7,14 @@ export const ROUTE_NAMES = {
|
|||||||
USERMGMT: '/user-management',
|
USERMGMT: '/user-management',
|
||||||
|
|
||||||
// (token-based)
|
// (token-based)
|
||||||
|
// `pin` param is optional
|
||||||
VORGANG: (vorgangToken: string, vorgangPIN: string) =>
|
VORGANG: (vorgangToken: string, vorgangPIN: string) =>
|
||||||
vorgangPIN ? `/list/${vorgangToken}?pin=${vorgangPIN}` : `/list/${vorgangToken}`,
|
vorgangPIN ? `/list/${vorgangToken}?pin=${vorgangPIN}` : `/list/${vorgangToken}`,
|
||||||
|
|
||||||
CRIME: (vorgangToken: string, tatort: string) => `/view/${vorgangToken}/${tatort}`,
|
CRIME: (vorgangToken: string, tatort: string, vorgangPIN: string) =>
|
||||||
|
vorgangPIN
|
||||||
|
? `/view/${vorgangToken}/${tatort}?pin=${vorgangPIN}`
|
||||||
|
: `/view/${vorgangToken}/${tatort}`,
|
||||||
|
|
||||||
// Anmeldung: actions
|
// Anmeldung: actions
|
||||||
ANMELDUNG_LOGIN: '/anmeldung?/login',
|
ANMELDUNG_LOGIN: '/anmeldung?/login',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ 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';
|
||||||
|
import { ROUTE_NAMES } from '../src/routes';
|
||||||
|
|
||||||
describe('Seite: Vorgangsansicht', () => {
|
describe('Seite: Vorgangsansicht', () => {
|
||||||
test.todo('zeigt PIN und Share-Link, wenn Admin');
|
test.todo('zeigt PIN und Share-Link, wenn Admin');
|
||||||
@@ -84,4 +85,19 @@ describe('Seite: Vorgangsansicht', () => {
|
|||||||
|
|
||||||
test.todo('zeigt keinen Share-Link oder PIN');
|
test.todo('zeigt keinen Share-Link oder PIN');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Teste Links auf Korrektheit', () => {
|
||||||
|
it('Überprüfe Links', () => {
|
||||||
|
const crimesListOneItem = baseData.crimesList.slice(0, 1);
|
||||||
|
const crimeObj = crimesListOneItem[0];
|
||||||
|
const vorgObj = baseData.vorgangList[0]
|
||||||
|
const expectedURL = ROUTE_NAMES.CRIME(vorgObj.vorgangToken, crimeObj.name, vorgObj.vorgangPIN)
|
||||||
|
|
||||||
|
render(TatortListPage, { props: { data: { ...baseData, crimesList: crimesListOneItem } } });
|
||||||
|
const listItem = screen.getByTestId("test-list-item");
|
||||||
|
const linkElement = within(listItem).getByRole('link');
|
||||||
|
expect(linkElement).toBeInTheDocument();
|
||||||
|
expect(linkElement).toHaveAttribute('href', expectedURL);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user