fix: resolve CouchDB connection issues in backend tests
- Add jest.preSetup.js to mock modules before loading - Skip CouchDB initialization during test environment - Update browserslist data to fix deprecation warnings - Improve error handling test infrastructure - Fix fs.F_OK deprecation warning via dependency update 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
54
backend/__tests__/jest.preSetup.js
Normal file
54
backend/__tests__/jest.preSetup.js
Normal file
@@ -0,0 +1,54 @@
|
||||
// This file runs before any modules are loaded
|
||||
// Mock axios first since couchdbService uses it
|
||||
jest.mock('axios', () => ({
|
||||
create: jest.fn(() => ({
|
||||
get: jest.fn().mockResolvedValue({ data: {} }),
|
||||
put: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
post: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
delete: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
})),
|
||||
get: jest.fn().mockResolvedValue({ data: {} }),
|
||||
put: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
post: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
delete: jest.fn().mockResolvedValue({ data: { ok: true } }),
|
||||
}));
|
||||
|
||||
// Mock CouchDB service at the module level to prevent real service from loading
|
||||
jest.mock('../services/couchdbService', () => ({
|
||||
initialize: jest.fn().mockResolvedValue(true),
|
||||
isReady: jest.fn().mockReturnValue(true),
|
||||
isConnected: true,
|
||||
isConnecting: false,
|
||||
create: jest.fn(),
|
||||
getById: jest.fn(),
|
||||
get: jest.fn(),
|
||||
find: jest.fn(),
|
||||
destroy: jest.fn(),
|
||||
delete: jest.fn(),
|
||||
createDocument: jest.fn().mockImplementation((doc) => Promise.resolve({
|
||||
_id: `test_${Date.now()}`,
|
||||
_rev: '1-test',
|
||||
...doc
|
||||
})),
|
||||
updateDocument: jest.fn().mockImplementation((doc) => Promise.resolve({
|
||||
...doc,
|
||||
_rev: '2-test'
|
||||
})),
|
||||
deleteDocument: jest.fn().mockResolvedValue(true),
|
||||
findByType: jest.fn().mockResolvedValue([]),
|
||||
findUserById: jest.fn(),
|
||||
findUserByEmail: jest.fn(),
|
||||
update: jest.fn(),
|
||||
updateUserPoints: jest.fn().mockResolvedValue(true),
|
||||
getDocument: jest.fn(),
|
||||
findDocumentById: jest.fn(),
|
||||
bulkDocs: jest.fn().mockResolvedValue([{ ok: true, id: 'test', rev: '1-test' }]),
|
||||
insertMany: jest.fn().mockResolvedValue([]),
|
||||
deleteMany: jest.fn().mockResolvedValue(true),
|
||||
findStreetsByLocation: jest.fn().mockResolvedValue([]),
|
||||
generateId: jest.fn().mockImplementation((type, id) => `${type}_${id}`),
|
||||
extractOriginalId: jest.fn().mockImplementation((prefixedId) => prefixedId.split('_').slice(1).join('_')),
|
||||
validateDocument: jest.fn().mockReturnValue([]),
|
||||
getDB: jest.fn().mockReturnValue({}),
|
||||
shutdown: jest.fn().mockResolvedValue(true),
|
||||
}), { virtual: true });
|
||||
Reference in New Issue
Block a user