Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2e086d5ba | ||
| 07a9787570 |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.2.33",
|
||||
"version": "0.2.34",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.2.33",
|
||||
"version": "0.2.34",
|
||||
"dependencies": {
|
||||
"@bull-board/api": "^6.14.2",
|
||||
"@bull-board/express": "^6.14.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"private": true,
|
||||
"version": "0.2.33",
|
||||
"version": "0.2.34",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "concurrently \"npm:start:dev\" \"vite\"",
|
||||
|
||||
@@ -113,13 +113,14 @@ describe('errorHandler Middleware', () => {
|
||||
expect(response.body.message).toBe('A generic server error occurred.');
|
||||
expect(response.body.stack).toBeDefined();
|
||||
expect(response.body.errorId).toEqual(expect.any(String));
|
||||
console.log('[DEBUG] errorHandler.test.ts: Received 500 error response with ID:', response.body.errorId);
|
||||
expect(mockLogger.error).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
errorId: expect.any(String),
|
||||
req: expect.objectContaining({ method: 'GET', url: '/generic-error' }),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/--- \[TEST\] UNHANDLED ERROR \(ID: \w+\) ---/),
|
||||
@@ -226,7 +227,7 @@ describe('errorHandler Middleware', () => {
|
||||
errorId: expect.any(String),
|
||||
req: expect.objectContaining({ method: 'GET', url: '/db-error-500' }),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/--- \[TEST\] UNHANDLED ERROR \(ID: \w+\) ---/),
|
||||
|
||||
@@ -164,11 +164,12 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect(response.body.message).toBe('DB connection failed'); // This is the message from the original error
|
||||
expect(response.body.stack).toBeDefined();
|
||||
expect(response.body.errorId).toEqual(expect.any(String));
|
||||
console.log('[DEBUG] health.routes.test.ts: Verifying logger.error for DB schema check failure');
|
||||
expect(mockLogger.error).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -186,7 +187,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.objectContaining({ message: 'DB connection failed' }),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -220,7 +221,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -239,7 +240,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -300,7 +301,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -321,7 +322,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.objectContaining({ message: 'Pool is not initialized' }),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -336,11 +337,12 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect(response.body.message).toBe('Connection timed out');
|
||||
expect(response.body.stack).toBeDefined();
|
||||
expect(response.body.errorId).toEqual(expect.any(String));
|
||||
console.log('[DEBUG] health.routes.test.ts: Checking if logger.error was called with the correct pattern');
|
||||
expect(mockLogger.error).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -357,7 +359,7 @@ describe('Health Routes (/api/health)', () => {
|
||||
expect.objectContaining({
|
||||
err: expect.any(Error),
|
||||
}),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: \w+\)/),
|
||||
expect.stringMatching(/Unhandled API Error \(ID: [\w-]+\)/),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -190,7 +190,10 @@ describe('Worker Service Lifecycle', () => {
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
processExitSpy.mockRestore();
|
||||
if (processExitSpy && typeof processExitSpy.mockRestore === 'function') {
|
||||
console.log('[DEBUG] queueService.server.test.ts: Restoring process.exit spy');
|
||||
processExitSpy.mockRestore();
|
||||
}
|
||||
});
|
||||
|
||||
it('should close all workers, queues, the redis connection, and exit the process', async () => {
|
||||
|
||||
@@ -142,15 +142,6 @@ vi.mock('util', async (importOriginal) => {
|
||||
};
|
||||
});
|
||||
|
||||
// Mock 'child_process' using the robust `importOriginal` pattern.
|
||||
// This is needed because some services (systemService, workers.server) import it at the top level.
|
||||
vi.mock('child_process', () => {
|
||||
return {
|
||||
__esModule: true, // Handle CJS/ESM interop
|
||||
exec: vi.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
// Mock 'jsonwebtoken'. The `default` key is crucial because the code under test
|
||||
// uses `import jwt from 'jsonwebtoken'`, which imports the default export.
|
||||
vi.mock('jsonwebtoken', () => ({
|
||||
@@ -170,9 +161,13 @@ vi.mock('bcrypt');
|
||||
vi.mock('crypto', () => ({
|
||||
default: {
|
||||
randomBytes: vi.fn().mockReturnValue({
|
||||
toString: vi.fn().mockReturnValue('mocked-random-string'),
|
||||
toString: vi.fn().mockImplementation((encoding) => {
|
||||
const id = 'mocked_random_id';
|
||||
console.log(`[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "${id}" for encoding "${encoding}"`);
|
||||
return id;
|
||||
}),
|
||||
}),
|
||||
randomUUID: vi.fn().mockReturnValue('mocked-random-string'),
|
||||
randomUUID: vi.fn().mockReturnValue('mocked_random_id'),
|
||||
},
|
||||
}));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user