25 lines
929 B
TypeScript
25 lines
929 B
TypeScript
import { ApiError } from '../../backend/src/common/errors/api-error';
|
|
import { ERROR_CODES } from '../../backend/src/common/errors/error-codes';
|
|
|
|
describe('ApiError', () => {
|
|
it('formats validation errors with details', () => {
|
|
const e = ApiError.validation('Bad input', { field: 'x' });
|
|
expect(e.getStatus()).toBe(400);
|
|
const body = e.getResponse() as any;
|
|
expect(body.code).toBe(ERROR_CODES.VALIDATION_FAILED);
|
|
expect(body.message).toBe('Bad input');
|
|
expect(body.details).toEqual({ field: 'x' });
|
|
});
|
|
|
|
it('formats last-admin conflict', () => {
|
|
const e = ApiError.conflict(ERROR_CODES.LAST_ADMIN, 'Cannot delete the last admin');
|
|
expect(e.getStatus()).toBe(409);
|
|
const body = e.getResponse() as any;
|
|
expect(body.code).toBe(ERROR_CODES.LAST_ADMIN);
|
|
});
|
|
|
|
it('formats internal error as 500', () => {
|
|
const e = ApiError.internal();
|
|
expect(e.getStatus()).toBe(500);
|
|
});
|
|
}); |