94 lines
2.8 KiB
TypeScript
94 lines
2.8 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';
|
|
|
|
// 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 response = await DELETE({ 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 };
|
|
|
|
// Mock Datei nicht gefunden
|
|
client.statObject.mockRejectedValueOnce(new Error('NotFound'));
|
|
|
|
const response = await PUT({ 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 params = { vorgang: fakeVorgangToken };
|
|
|
|
const response = await PUT({ 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 };
|
|
|
|
// Datei existiert bereits
|
|
client.statObject.mockResolvedValueOnce({});
|
|
|
|
const response = await PUT({ 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();
|
|
});
|
|
});
|