fix unit tests
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 42s
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 42s
This commit is contained in:
@@ -4,6 +4,7 @@ import multer from 'multer';
|
||||
import type { Request, Response, NextFunction } from 'express';
|
||||
import { createUploadMiddleware, handleMulterError } from './multer.middleware';
|
||||
import { createMockUserProfile } from '../tests/utils/mockFactories';
|
||||
import { ValidationError } from '../services/db/errors.db';
|
||||
|
||||
// 1. Hoist the mocks so they can be referenced inside vi.mock factories.
|
||||
const mocks = vi.hoisted(() => ({
|
||||
@@ -217,9 +218,11 @@ describe('createUploadMiddleware', () => {
|
||||
const cb = vi.fn();
|
||||
const mockTextFile = { mimetype: 'text/plain' } as Express.Multer.File;
|
||||
|
||||
multerOptions!.fileFilter!({} as Request, mockTextFile, cb);
|
||||
multerOptions!.fileFilter!({} as Request, { ...mockTextFile, fieldname: 'test' }, cb);
|
||||
|
||||
expect(cb).toHaveBeenCalledWith(new Error('Only image files are allowed!'));
|
||||
const error = (cb as Mock).mock.calls[0][0];
|
||||
expect(error).toBeInstanceOf(ValidationError);
|
||||
expect(error.validationErrors[0].message).toBe('Only image files are allowed!');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -248,13 +251,13 @@ describe('handleMulterError Middleware', () => {
|
||||
expect(mockNext).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle the custom image file filter error', () => {
|
||||
// This test covers lines 59-61
|
||||
const err = new Error('Only image files are allowed!');
|
||||
it('should pass on a ValidationError to the next handler', () => {
|
||||
const err = new ValidationError([], 'Only image files are allowed!');
|
||||
handleMulterError(err, mockRequest as Request, mockResponse as Response, mockNext);
|
||||
expect(mockResponse.status).toHaveBeenCalledWith(400);
|
||||
expect(mockResponse.json).toHaveBeenCalledWith({ message: 'Only image files are allowed!' });
|
||||
expect(mockNext).not.toHaveBeenCalled();
|
||||
// It should now pass the error to the global error handler
|
||||
expect(mockNext).toHaveBeenCalledWith(err);
|
||||
expect(mockResponse.status).not.toHaveBeenCalled();
|
||||
expect(mockResponse.json).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should pass on non-multer errors to the next error handler', () => {
|
||||
|
||||
Reference in New Issue
Block a user