add conditional route and crimeList View refactoring + tests
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
import { invalidateAll } from '$app/navigation';
|
||||
import NameItemEditor from '$lib/components/NameItemEditor.svelte';
|
||||
import EmptyList from '$lib/components/EmptyList.svelte';
|
||||
import { ROUTE_NAMES } from '../../../index.js';
|
||||
|
||||
//Seite für die Tatort-Liste
|
||||
let { data } = $props();
|
||||
@@ -144,7 +145,7 @@ Mit freundlichen Grüßen,
|
||||
<div class=" flex gap-x-4">
|
||||
<a
|
||||
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"
|
||||
aria-label="/view/{vorgangToken}/{item.name}?pin={vorgangPIN}"
|
||||
title={item.name}
|
||||
|
||||
@@ -7,10 +7,14 @@ export const ROUTE_NAMES = {
|
||||
USERMGMT: '/user-management',
|
||||
|
||||
// (token-based)
|
||||
// `pin` param is optional
|
||||
VORGANG: (vorgangToken: string, vorgangPIN: string) =>
|
||||
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_LOGIN: '/anmeldung?/login',
|
||||
|
||||
@@ -2,6 +2,7 @@ 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 { baseData } from './fixtures';
|
||||
import { ROUTE_NAMES } from '../src/routes';
|
||||
|
||||
describe('Seite: Vorgangsansicht', () => {
|
||||
test.todo('zeigt PIN und Share-Link, wenn Admin');
|
||||
@@ -84,4 +85,19 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
|
||||
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