Tests refactor
This commit is contained in:
parent
245520fb50
commit
99134d8556
165 changed files with 911 additions and 531 deletions
85
packages/api/tests/common/errors.test.ts
Normal file
85
packages/api/tests/common/errors.test.ts
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import {
|
||||
AppError,
|
||||
NotFoundError,
|
||||
UnauthorizedError,
|
||||
ForbiddenError,
|
||||
ConflictError,
|
||||
BadRequestError,
|
||||
} from '../../src/common/errors.js';
|
||||
|
||||
describe(AppError.name, () => {
|
||||
it('sets statusCode, error, message, and details', () => {
|
||||
const details = { field: ['required'] };
|
||||
const err = new AppError(422, 'Unprocessable', 'Bad input', details);
|
||||
|
||||
expect(err).toBeInstanceOf(Error);
|
||||
expect(err).toBeInstanceOf(AppError);
|
||||
expect(err.statusCode).toBe(422);
|
||||
expect(err.error).toBe('Unprocessable');
|
||||
expect(err.message).toBe('Bad input');
|
||||
expect(err.details).toEqual(details);
|
||||
});
|
||||
|
||||
it('works without details', () => {
|
||||
const err = new AppError(500, 'Internal', 'Oops');
|
||||
expect(err.details).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe(NotFoundError.name, () => {
|
||||
it('defaults to 404 with standard message', () => {
|
||||
const err = new NotFoundError();
|
||||
expect(err.statusCode).toBe(404);
|
||||
expect(err.error).toBe('Not Found');
|
||||
expect(err.message).toBe('Resource not found');
|
||||
});
|
||||
|
||||
it('accepts custom message', () => {
|
||||
const err = new NotFoundError('User not found');
|
||||
expect(err.message).toBe('User not found');
|
||||
});
|
||||
});
|
||||
|
||||
describe(UnauthorizedError.name, () => {
|
||||
it('defaults to 401', () => {
|
||||
const err = new UnauthorizedError();
|
||||
expect(err.statusCode).toBe(401);
|
||||
expect(err.error).toBe('Unauthorized');
|
||||
expect(err.message).toBe('Unauthorized');
|
||||
});
|
||||
});
|
||||
|
||||
describe(ForbiddenError.name, () => {
|
||||
it('defaults to 403', () => {
|
||||
const err = new ForbiddenError();
|
||||
expect(err.statusCode).toBe(403);
|
||||
expect(err.error).toBe('Forbidden');
|
||||
expect(err.message).toBe('Forbidden');
|
||||
});
|
||||
});
|
||||
|
||||
describe(ConflictError.name, () => {
|
||||
it('defaults to 409', () => {
|
||||
const err = new ConflictError();
|
||||
expect(err.statusCode).toBe(409);
|
||||
expect(err.error).toBe('Conflict');
|
||||
expect(err.message).toBe('Conflict');
|
||||
});
|
||||
});
|
||||
|
||||
describe(BadRequestError.name, () => {
|
||||
it('defaults to 400', () => {
|
||||
const err = new BadRequestError();
|
||||
expect(err.statusCode).toBe(400);
|
||||
expect(err.error).toBe('Bad Request');
|
||||
expect(err.message).toBe('Bad Request');
|
||||
});
|
||||
|
||||
it('accepts message and details', () => {
|
||||
const details = { name: ['too short'] };
|
||||
const err = new BadRequestError('Invalid input', details);
|
||||
expect(err.message).toBe('Invalid input');
|
||||
expect(err.details).toEqual(details);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue