implement testsNameItemEditor funktionalität
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// @vitest-environment jsdom
|
||||
import { render, fireEvent, screen, within } from '@testing-library/svelte';
|
||||
import { describe, it, expect, vi, test } from 'vitest';
|
||||
import * as nav from '$app/navigation';
|
||||
@@ -6,7 +5,6 @@ import TatortListPage from '../src/routes/(token-based)/list/[vorgang]/+page.sve
|
||||
import { baseData } from './fixtures';
|
||||
import { tick } from 'svelte';
|
||||
|
||||
// Mock für invalidateAll
|
||||
vi.spyOn(nav, 'invalidateAll').mockResolvedValue();
|
||||
global.fetch = vi.fn().mockResolvedValue({ ok: true });
|
||||
|
||||
@@ -16,7 +14,6 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
describe('Szenario: Admin + Liste gefüllt - Funktionalität', () => {
|
||||
test.todo('Share Link Link generierung richtig');
|
||||
|
||||
|
||||
it('führt PUT-Request aus und aktualisiert UI nach onSave', async () => {
|
||||
const data = structuredClone(baseData);
|
||||
const oldName = data.crimesList[0].name;
|
||||
@@ -24,19 +21,15 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
|
||||
render(TatortListPage, { props: { data } });
|
||||
const listItem = screen.getAllByTestId('test-list-item')[0];
|
||||
// teste ob alter Name angezeigt:
|
||||
expect(listItem).toHaveTextContent(oldName);
|
||||
|
||||
// Editmodus
|
||||
await fireEvent.click(within(listItem).getByTestId('edit-button'));
|
||||
const input = within(listItem).getByTestId('test-input');
|
||||
await fireEvent.input(input, { target: { value: newName } });
|
||||
|
||||
// Commit
|
||||
await fireEvent.click(within(listItem).getByTestId('commit-button'));
|
||||
await Promise.resolve(); // wartet reaktive Updates ab
|
||||
await tick();
|
||||
|
||||
// FETCH-CHECK
|
||||
expect(global.fetch).toHaveBeenCalledWith(
|
||||
`/api/list/${data.vorgang.vorgangToken}/${oldName}`,
|
||||
expect.objectContaining({
|
||||
@@ -50,10 +43,7 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
})
|
||||
);
|
||||
|
||||
// INVALIDATE-CHECK
|
||||
expect(nav.invalidateAll).toHaveBeenCalled();
|
||||
|
||||
// UI-UPDATE
|
||||
expect(within(listItem).getByText(newName)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -61,26 +51,21 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
const testData = structuredClone(baseData);
|
||||
const oldName = testData.crimesList[0].name;
|
||||
|
||||
// Rendern und initiale Liste prüfen
|
||||
render(TatortListPage, { props: { data: testData } });
|
||||
const initialItems = screen.getAllByTestId('test-list-item');
|
||||
expect(initialItems).toHaveLength(testData.crimesList.length);
|
||||
|
||||
const listItem = screen.getAllByTestId('test-list-item')[0];
|
||||
// teste ob alter Name angezeigt:
|
||||
expect(listItem).toHaveTextContent(oldName);
|
||||
// Delete-Button klicken
|
||||
const del = within(listItem).getByTestId('delete-button');
|
||||
expect(del).toBeInTheDocument()
|
||||
await fireEvent.click(within(listItem).getByTestId('delete-button'));
|
||||
// auf reaktive Updates warten
|
||||
await tick();
|
||||
|
||||
// FETCH-CHECK: URL & Payload
|
||||
// entspricht: new URL(data.url).pathname + '/' + oldName
|
||||
const expectedPath = new URL(testData.url).pathname;
|
||||
let expectedPath = new URL(testData.url).pathname;
|
||||
expectedPath += `/${oldName}`
|
||||
expect(global.fetch).toHaveBeenCalledWith(
|
||||
`/api${expectedPath}/${oldName}`,
|
||||
`/api${expectedPath}`,
|
||||
expect.objectContaining({
|
||||
method: 'DELETE',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -90,14 +75,10 @@ describe('Seite: Vorgangsansicht', () => {
|
||||
})
|
||||
})
|
||||
);
|
||||
// INVALIDATE-CHECK
|
||||
expect(nav.invalidateAll).toHaveBeenCalled();
|
||||
|
||||
// UI-UPDATE: Element entfernt
|
||||
const updatedItems = screen.queryAllByTestId('test-list-item');
|
||||
expect(updatedItems).toHaveLength(testData.crimesList.length - 1);
|
||||
expect(screen.queryByText(oldName)).toBeNull();
|
||||
|
||||
const updatedItems = screen.queryAllByTestId('test-list-item');
|
||||
expect(updatedItems).toHaveLength(testData.crimesList.length - 1);
|
||||
expect(screen.queryByText(oldName)).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user