save changes, bin aber noch nicht fertig
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { fireEvent, getAllByTestId, queryAllByTestId, render, screen, within } from '@testing-library/svelte';
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { fireEvent, getByTestId, queryAllByTestId, render, screen, within } from '@testing-library/svelte';
|
||||
import { describe, expect, it, test, vi } from "vitest";
|
||||
import TatortListPage from "../src/routes/(token-based)/list/[vorgang]/+page.svelte";
|
||||
import { baseData } from './fixtures';
|
||||
import { invalidateAll } from '$app/navigation';
|
||||
|
||||
|
||||
// Mock für invalidateAll
|
||||
@@ -9,69 +10,85 @@ vi.mock('$app/navigation', () => ({
|
||||
invalidateAll: vi.fn()
|
||||
}));
|
||||
|
||||
// Minimaler fetch-Mock
|
||||
global.fetch = vi.fn().mockResolvedValue({ ok: true });
|
||||
|
||||
describe('Seite: Vorgangsansicht', () => {
|
||||
describe('Szenario: Admin + Liste gefüllt', () => {
|
||||
it('ändert den Namen nach Speichern', async () => {
|
||||
const testData = structuredClone(baseData);
|
||||
const oldName = testData.crimesList[0].name;
|
||||
test.todo('Share Link disabled wenn Liste leer');
|
||||
describe('Szenario: Admin + Liste gefüllt', () => {
|
||||
test.todo('Share Link Link generierung richtig');
|
||||
|
||||
render(TatortListPage, { props: { data: testData } });
|
||||
it('ändert den Namen nach Speichern', async () => {
|
||||
const testData = structuredClone(baseData);
|
||||
const oldName = testData.crimesList[0].name;
|
||||
const newName = 'Fall-B';
|
||||
const list = testData.crimesList
|
||||
const vorgangToken = testData.vorgang.vorgangToken
|
||||
// Minimaler fetch-Mock
|
||||
global.fetch = vi.fn().mockResolvedValue({ ok: true }) as typeof fetch;
|
||||
|
||||
const firstItem = screen.getAllByTestId('test-list-item')[0];
|
||||
await fireEvent.click(within(firstItem).getByTestId('edit-button'));
|
||||
const { getAllByTestId } = render(TatortListPage, { props: { data: testData } });
|
||||
|
||||
const input = within(firstItem).getByRole('textbox');
|
||||
await fireEvent.input(input, { target: { value: 'Fall-B' } });
|
||||
const firstItem = getAllByTestId('test-list-item')[0];
|
||||
const editButton = within(firstItem).getByTestId('edit-button');
|
||||
await fireEvent.click(editButton);
|
||||
|
||||
await fireEvent.click(within(firstItem).getByTestId('commit-button'));
|
||||
const input = within(firstItem).getByTestId('test-input');
|
||||
expect(input).toHaveValue(oldName)
|
||||
await fireEvent.input(input, { target: { value: newName } });
|
||||
|
||||
// Erwartung: fetch wurde aufgerufen
|
||||
expect(global.fetch).toHaveBeenCalledWith(
|
||||
expect.stringContaining(`/api/list/${testData.vorgang.vorgangToken}/${oldName}`),
|
||||
expect.any(Object)
|
||||
);
|
||||
const commitButton = within(firstItem).getByTestId('commit-button');
|
||||
await fireEvent.click(commitButton);
|
||||
|
||||
// Erwartung: neuer Name ist sofort im DOM sichtbar
|
||||
expect(within(firstItem).getByRole('textbox')).toHaveValue('Fall-B');
|
||||
// const fetchMock = global.fetch as ReturnType<typeof vi.fn>;
|
||||
// console.log('Fetch calls:', fetchMock.mock.calls);
|
||||
|
||||
});
|
||||
// // Erwartung: fetch wurde aufgerufen
|
||||
// expect(global.fetch).toHaveBeenCalledWith(
|
||||
// expect.stringContaining(`/api/list/${vorgangToken}/${oldName}`),
|
||||
// expect.objectContaining({
|
||||
// method: 'PUT',
|
||||
// headers: { 'Content-Type': 'application/json' },
|
||||
// body: JSON.stringify({vorgangToken, oldName, newName})
|
||||
// })
|
||||
// );
|
||||
|
||||
it('entfernt das Listenelement nach Löschen', async () => {
|
||||
const testData = structuredClone(baseData);
|
||||
testData.url = new URL('https://example.com/vorgang-1'); // Fix für Invalid URL
|
||||
const toDelete = testData.crimesList[0];
|
||||
// expect(invalidateAll).toHaveBeenCalled();
|
||||
// Erwartung: neuer Name ist sofort im DOM sichtbar
|
||||
// expect(within(firstItem).getByRole('textbox')).toHaveValue(newName);
|
||||
// const editedLink = within(firstItem).getByRole('link');
|
||||
// const editedExpectedHref = `/view/${vorgangToken}/${newName}?pin=${testData.vorgang.vorgangPIN}`;
|
||||
|
||||
global.fetch = vi.fn().mockResolvedValue({ ok: true });
|
||||
// expect(editedLink).toBeInTheDocument();
|
||||
// expect(editedLink).toHaveAttribute('href', editedExpectedHref);
|
||||
// expect(editedLink).toHaveAttribute('title', newName);
|
||||
});
|
||||
|
||||
render(TatortListPage, { props: { data: testData } });
|
||||
const deletedFirstItem = screen.getAllByTestId('test-list-item')[0];
|
||||
// it('entfernt das Listenelement nach Löschen', async () => {
|
||||
// const testData = structuredClone(baseData);
|
||||
// testData.url = new URL('https://example.com/vorgang-1'); // Fix für Invalid URL
|
||||
// const toDelete = testData.crimesList[0];
|
||||
|
||||
// global.fetch = vi.fn().mockResolvedValue({ ok: true });
|
||||
|
||||
const deletedLink = within(deletedFirstItem).getByRole('link');
|
||||
// render(TatortListPage, { props: { data: testData } });
|
||||
// const deletedFirstItem = screen.getAllByTestId('test-list-item')[0];
|
||||
// const deletedLink = within(deletedFirstItem).getByRole('link');
|
||||
// const deletedExpectedHref = `/view/${testData.vorgang.vorgangToken}/${toDelete.name}?pin=${testData.vorgang.vorgangPIN}`;
|
||||
|
||||
const deletedExpectedHref = `/view/${testData.vorgang.vorgangToken}/${toDelete.name}?pin=${testData.vorgang.vorgangPIN}`;
|
||||
// expect(deletedLink).toBeInTheDocument();
|
||||
// expect(deletedLink).toHaveAttribute('href', deletedExpectedHref);
|
||||
// expect(deletedLink).toHaveAttribute('title', toDelete.name);
|
||||
// await fireEvent.click(within(deletedFirstItem).getByTestId('delete-button'));
|
||||
|
||||
expect(deletedLink).toBeInTheDocument();
|
||||
// // Erwartung: fetch wurde aufgerufen
|
||||
// expect(global.fetch).toHaveBeenCalledWith(
|
||||
// expect.stringContaining(`/api/vorgang-1/${toDelete.name}`),
|
||||
// expect.any(Object)
|
||||
// );
|
||||
|
||||
expect(deletedLink).toHaveAttribute('href', deletedExpectedHref);
|
||||
expect(deletedLink).toHaveAttribute('title', toDelete.name);
|
||||
|
||||
|
||||
await fireEvent.click(within(deletedFirstItem).getByTestId('delete-button'));
|
||||
|
||||
// Erwartung: fetch wurde aufgerufen
|
||||
expect(global.fetch).toHaveBeenCalledWith(
|
||||
expect.stringContaining(`/api/vorgang-1/${toDelete.name}`),
|
||||
expect.any(Object)
|
||||
);
|
||||
|
||||
// Erwartung: Element ist nicht mehr im DOM
|
||||
expect(within(deletedFirstItem).getByRole('textbox')).toHaveValue(toDelete.name);
|
||||
});
|
||||
});
|
||||
// // Erwartung: Element ist nicht mehr im DOM
|
||||
// expect(within(deletedFirstItem).getByRole('textbox')).toHaveValue(toDelete.name);
|
||||
// });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user