feat: complete User model migration from MongoDB to CouchDB
- Replace Mongoose User schema with CouchDB-compatible User class - Implement all MongoDB-compatible static methods (findOne, findById, create, save, etc.) - Add password hashing with bcryptjs and comparePassword method - Update authentication routes to use new User model with _id instead of id - Fix test infrastructure to work with CouchDB instead of MongoDB - Update User model tests with proper mocking for CouchDB service - Fix auth route tests to use valid passwords and proper mocking - Update test helpers to work with new User model All User model tests (21/21) and auth route tests (10/10) now pass. 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
@@ -7,9 +7,18 @@ jest.mock('../../services/couchdbService');
|
||||
describe('User Model', () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
// Reset all mocks to ensure clean state
|
||||
couchdbService.findUserByEmail.mockReset();
|
||||
couchdbService.findUserById.mockReset();
|
||||
couchdbService.createDocument.mockReset();
|
||||
couchdbService.updateDocument.mockReset();
|
||||
});
|
||||
|
||||
describe('Schema Validation', () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it('should create a valid user', async () => {
|
||||
const userData = {
|
||||
name: 'Test User',
|
||||
@@ -88,11 +97,7 @@ describe('User Model', () => {
|
||||
password: 'password123',
|
||||
};
|
||||
|
||||
couchdbService.findUserByEmail.mockResolvedValueOnce(null);
|
||||
couchdbService.createDocument.mockResolvedValueOnce({ _id: 'user1', ...userData });
|
||||
|
||||
await User.create(userData);
|
||||
|
||||
// Test that we can find a user by email
|
||||
const existingUser = {
|
||||
_id: 'user1',
|
||||
_rev: '1-abc',
|
||||
@@ -115,11 +120,12 @@ describe('User Model', () => {
|
||||
createdAt: '2023-01-01T00:00:00.000Z',
|
||||
updatedAt: '2023-01-01T00:00:00.000Z'
|
||||
};
|
||||
couchdbService.findUserByEmail.mockResolvedValueOnce(existingUser);
|
||||
|
||||
couchdbService.findUserByEmail.mockResolvedValue(existingUser);
|
||||
|
||||
const user2 = await User.findOne({ email });
|
||||
expect(user2).toBeDefined();
|
||||
expect(user2.email).toBe(email);
|
||||
const user = await User.findOne({ email });
|
||||
expect(user).toBeDefined();
|
||||
expect(user.email).toBe(email);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user