unit test repairs
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 1m17s

This commit is contained in:
2026-01-12 08:10:37 -08:00
parent 8eaee2844f
commit 2a5cc5bb51
38 changed files with 1291 additions and 604 deletions

View File

@@ -32,7 +32,7 @@ vi.mock('../lib/queue', () => ({
cleanupQueue: {},
}));
const { mockedDb } = vi.hoisted(() => {
const { mockedDb, mockedBrandService } = vi.hoisted(() => {
return {
mockedDb: {
adminRepo: {
@@ -59,6 +59,9 @@ const { mockedDb } = vi.hoisted(() => {
deleteUserById: vi.fn(),
},
},
mockedBrandService: {
updateBrandLogo: vi.fn(),
},
};
});
@@ -89,6 +92,26 @@ vi.mock('node:fs/promises', () => ({
vi.mock('../services/backgroundJobService');
vi.mock('../services/geocodingService.server');
vi.mock('../services/queueService.server');
vi.mock('../services/queues.server');
vi.mock('../services/workers.server');
vi.mock('../services/monitoringService.server');
vi.mock('../services/cacheService.server');
vi.mock('../services/userService');
vi.mock('../services/brandService', () => ({
brandService: mockedBrandService,
}));
vi.mock('../services/receiptService.server');
vi.mock('../services/aiService.server');
vi.mock('../config/env', () => ({
config: {
database: { host: 'localhost', port: 5432, user: 'test', password: 'test', name: 'test' },
redis: { url: 'redis://localhost:6379' },
auth: { jwtSecret: 'test-secret' },
server: { port: 3000, host: 'localhost' },
},
isAiConfigured: vi.fn().mockReturnValue(false),
parseConfig: vi.fn(),
}));
vi.mock('@bull-board/api'); // Keep this mock for the API part
vi.mock('@bull-board/api/bullMQAdapter'); // Keep this mock for the adapter
@@ -103,13 +126,17 @@ vi.mock('@bull-board/express', () => ({
}));
// Mock the logger
vi.mock('../services/logger.server', async () => ({
// Use async import to avoid hoisting issues with mockLogger
logger: (await import('../tests/utils/mockLogger')).mockLogger,
}));
vi.mock('../services/logger.server', async () => {
const { mockLogger, createMockLogger } = await import('../tests/utils/mockLogger');
return {
logger: mockLogger,
createScopedLogger: vi.fn(() => createMockLogger()),
};
});
// Mock the passport middleware
vi.mock('./passport.routes', () => ({
// Note: admin.routes.ts imports from '../config/passport', so we mock that path
vi.mock('../config/passport', () => ({
default: {
authenticate: vi.fn(() => (req: Request, res: Response, next: NextFunction) => {
if (!req.user) return res.status(401).json({ message: 'Unauthorized' });
@@ -314,22 +341,23 @@ describe('Admin Content Management Routes (/api/admin)', () => {
it('POST /brands/:id/logo should upload a logo and update the brand', async () => {
const brandId = 55;
vi.mocked(mockedDb.adminRepo.updateBrandLogo).mockResolvedValue(undefined);
const mockLogoUrl = '/flyer-images/brand-logos/test-logo.png';
vi.mocked(mockedBrandService.updateBrandLogo).mockResolvedValue(mockLogoUrl);
const response = await supertest(app)
.post(`/api/admin/brands/${brandId}/logo`)
.attach('logoImage', Buffer.from('dummy-logo-content'), 'test-logo.png');
expect(response.status).toBe(200);
expect(response.body.data.message).toBe('Brand logo updated successfully.');
expect(vi.mocked(mockedDb.adminRepo.updateBrandLogo)).toHaveBeenCalledWith(
expect(vi.mocked(mockedBrandService.updateBrandLogo)).toHaveBeenCalledWith(
brandId,
expect.stringContaining('/flyer-images/'),
expect.objectContaining({ fieldname: 'logoImage' }),
expect.anything(),
);
});
it('POST /brands/:id/logo should return 500 on DB error', async () => {
const brandId = 55;
vi.mocked(mockedDb.adminRepo.updateBrandLogo).mockRejectedValue(new Error('DB Error'));
vi.mocked(mockedBrandService.updateBrandLogo).mockRejectedValue(new Error('DB Error'));
const response = await supertest(app)
.post(`/api/admin/brands/${brandId}/logo`)
.attach('logoImage', Buffer.from('dummy-logo-content'), 'test-logo.png');
@@ -347,7 +375,7 @@ describe('Admin Content Management Routes (/api/admin)', () => {
it('should clean up the uploaded file if updating the brand logo fails', async () => {
const brandId = 55;
const dbError = new Error('DB Connection Failed');
vi.mocked(mockedDb.adminRepo.updateBrandLogo).mockRejectedValue(dbError);
vi.mocked(mockedBrandService.updateBrandLogo).mockRejectedValue(dbError);
const response = await supertest(app)
.post(`/api/admin/brands/${brandId}/logo`)