fix(tests): Fix couchdbService mocking issues in model tests
- Fix User.test.js to properly use mockCouchdbService instead of couchdbService - Fix Street.test.js and Task.test.js mocking patterns - Add missing validation to Street and Task constructors - Add missing mock methods (initialize, getDocument, findUserById, etc.) - Update all references to use mocked service consistently This resolves the main mocking issues where tests were trying to access couchdbService directly instead of the mocked version. 🤖 Generated with AI Assistant Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
const User = require('../../models/User');
|
||||
|
||||
// Mock CouchDB service for testing
|
||||
const mockCouchdbService = {
|
||||
findUserByEmail: jest.fn(),
|
||||
@@ -16,6 +14,8 @@ const mockCouchdbService = {
|
||||
// Mock the service module
|
||||
jest.mock('../../services/couchdbService', () => mockCouchdbService);
|
||||
|
||||
const User = require('../../models/User');
|
||||
|
||||
describe('User Model', () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
@@ -61,7 +61,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -133,7 +133,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserByEmail.mockResolvedValue(existingUser);
|
||||
mockCouchdbService.findUserByEmail.mockResolvedValue(existingUser);
|
||||
|
||||
const user = await User.findOne({ email });
|
||||
expect(user).toBeDefined();
|
||||
@@ -172,7 +172,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -217,7 +217,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -256,7 +256,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -296,7 +296,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -337,7 +337,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -380,7 +380,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
expect(user.password).toMatch(/^\$2[aby]\$\d+\$/); // bcrypt hash pattern
|
||||
@@ -417,7 +417,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -461,7 +461,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
expect(user.isPremium).toBe(true);
|
||||
@@ -497,8 +497,8 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
couchdbService.updateDocument.mockResolvedValue({ ...mockUser, isPremium: true, _rev: '2-def' });
|
||||
mockCouchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
mockCouchdbService.updateDocument.mockResolvedValue({ ...mockUser, isPremium: true, _rev: '2-def' });
|
||||
|
||||
const user = await User.findById('user_123');
|
||||
user.isPremium = true;
|
||||
@@ -539,8 +539,8 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
couchdbService.updateDocument.mockResolvedValue({ ...mockUser, points: 150, _rev: '2-def' });
|
||||
mockCouchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
mockCouchdbService.updateDocument.mockResolvedValue({ ...mockUser, points: 150, _rev: '2-def' });
|
||||
|
||||
const user = await User.findById('user_123');
|
||||
user.points += 50;
|
||||
@@ -579,8 +579,8 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
couchdbService.updateDocument.mockResolvedValue({ ...mockUser, points: 75, _rev: '2-def' });
|
||||
mockCouchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
mockCouchdbService.updateDocument.mockResolvedValue({ ...mockUser, points: 75, _rev: '2-def' });
|
||||
|
||||
const user = await User.findById('user_123');
|
||||
user.points -= 25;
|
||||
@@ -623,7 +623,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
|
||||
@@ -663,7 +663,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserByEmail.mockResolvedValue(mockUser);
|
||||
mockCouchdbService.findUserByEmail.mockResolvedValue(mockUser);
|
||||
|
||||
const user = await User.findOne({ email: 'test@example.com' });
|
||||
expect(user).toBeDefined();
|
||||
@@ -696,7 +696,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
mockCouchdbService.findUserById.mockResolvedValue(mockUser);
|
||||
|
||||
const user = await User.findById('user_123');
|
||||
expect(user).toBeDefined();
|
||||
@@ -704,7 +704,7 @@ describe('User Model', () => {
|
||||
});
|
||||
|
||||
it('should return null when user not found', async () => {
|
||||
couchdbService.findUserById.mockResolvedValue(null);
|
||||
mockCouchdbService.findUserById.mockResolvedValue(null);
|
||||
|
||||
const user = await User.findById('nonexistent');
|
||||
expect(user).toBeNull();
|
||||
@@ -743,7 +743,7 @@ describe('User Model', () => {
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
|
||||
couchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
|
||||
|
||||
const user = await User.create(userData);
|
||||
const safeUser = user.toSafeObject();
|
||||
|
||||
Reference in New Issue
Block a user