Files
tatort/tests/api/ListVorgangTatort.test.ts

99 lines
3.1 KiB
TypeScript

import { describe, test, expect, vi } from 'vitest';
import { DELETE, PUT } from '$root/routes/api/list/[vorgang]/[tatort]/+server';
import { BUCKET, client } from '$lib/minio';
import { baseData } from '../fixtures';
// Mock data and methods
const fakeVorgangToken = `c399423a-ba37-4fe1-bbdf-80e5881168ff`;
const fakeCrimeOldName = `model-A`;
const fakeCrimeNewName = 'model-Z';
const fakeCrimePath = `${fakeVorgangToken}/${fakeCrimeOldName}`;
const fullFakeCrimePath = `/${BUCKET}/${fakeCrimePath}`;
const fakeCrimeAPIURL = `http://localhost:5173/api/list/${fakeCrimePath}`;
vi.mock('$lib/minio', () => ({
client: {
removeObject: vi.fn(),
statObject: vi.fn(),
copyObject: vi.fn()
},
BUCKET: 'tatort'
}));
describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
test('Löschen von Tatorten', async () => {
const request = new Request(fakeCrimeAPIURL);
const locals = { user: baseData.user }
const response = await DELETE({ locals, request });
expect(client.removeObject).toHaveBeenCalledWith(BUCKET, fakeCrimePath);
expect(response.status).toBe(204);
const responseBody = await response.text();
expect(responseBody).toBe('');
});
test('Umbennen von Tatorten: Erfolgreich', async () => {
const request = new Request(fakeCrimeAPIURL, {
method: 'PUT',
body: JSON.stringify({
oldName: fakeCrimeOldName,
newName: fakeCrimeNewName
})
});
const params = { vorgang: fakeVorgangToken };
const locals = { user: baseData.user }
// Mock Datei nicht gefunden
client.statObject.mockRejectedValueOnce(new Error('NotFound'));
const response = await PUT({ locals, params, request });
const fakeCrimeNewPath = `${fakeVorgangToken}/${fakeCrimeNewName}`;
expect(client.statObject).toHaveBeenCalledWith(BUCKET, fakeCrimeNewPath);
expect(client.copyObject).toHaveBeenCalledWith(BUCKET, fakeCrimeNewPath, fullFakeCrimePath);
expect(client.removeObject).toHaveBeenCalledWith(BUCKET, fakeCrimePath);
expect(response.status).toBe(200);
});
test('Umbennen von Tatorten: Fehlende(r) Name', async () => {
const request = new Request(fakeCrimeAPIURL, {
method: 'PUT',
body: JSON.stringify({
oldName: '',
newName: ''
})
});
const locals = { user: baseData.user }
const params = { vorgang: fakeVorgangToken };
const response = await PUT({ locals, params, request });
expect(response.status).toBe(400);
});
test('Umbennen von Tatorten: Existierender Name', async () => {
const request = new Request(fakeCrimeAPIURL, {
method: 'PUT',
body: JSON.stringify({
oldName: fakeCrimeOldName,
newName: fakeCrimeNewName
})
});
const params = { vorgang: fakeVorgangToken };
const locals = { user: baseData.user }
// Datei existiert bereits
client.statObject.mockResolvedValueOnce({});
const response = await PUT({ locals, params, request });
expect(response.status).toBe(400);
const fakeCrimeNewPath = `${fakeVorgangToken}/${fakeCrimeNewName}`;
expect(client.statObject).toHaveBeenCalledWith(BUCKET, fakeCrimeNewPath);
expect(client.copyObject).not.toHaveBeenCalled();
expect(client.removeObject).not.toHaveBeenCalled();
});
});