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:
William Valentin
2025-11-01 14:02:42 -07:00
parent 56c2292797
commit 190f08e71e
6 changed files with 127 additions and 79 deletions

View File

@@ -1,24 +1,32 @@
// Mock CouchDB service for testing
jest.mock('../../services/couchdbService', () => ({
const mockCouchdbService = {
createDocument: jest.fn(),
findDocumentById: jest.fn(),
updateDocument: jest.fn(),
findByType: jest.fn(),
}));
initialize: jest.fn(),
getDocument: jest.fn(),
findUserById: jest.fn(),
};
// Mock the service module
jest.mock('../../services/couchdbService', () => mockCouchdbService);
const Task = require('../../models/Task');
const User = require('../../models/User');
const Street = require('../../models/Street');
const couchdbService = require('../../services/couchdbService');
describe('Task Model', () => {
beforeEach(() => {
jest.clearAllMocks();
// Reset all mocks to ensure clean state
couchdbService.createDocument.mockReset();
couchdbService.findDocumentById.mockReset();
couchdbService.updateDocument.mockReset();
couchdbService.findByType.mockReset();
mockCouchdbService.createDocument.mockReset();
mockCouchdbService.findDocumentById.mockReset();
mockCouchdbService.updateDocument.mockReset();
mockCouchdbService.findByType.mockReset();
mockCouchdbService.initialize.mockReset();
mockCouchdbService.getDocument.mockReset();
mockCouchdbService.findUserById.mockReset();
});
describe('Schema Validation', () => {
@@ -48,7 +56,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -112,7 +121,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -148,7 +158,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -184,8 +195,14 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.findDocumentById.mockResolvedValue(mockTask);
couchdbService.updateDocument.mockResolvedValue({
mockCouchdbService.getDocument.mockResolvedValue(mockTask);
mockCouchdbService.findUserById.mockResolvedValue({
_id: 'user_123',
name: 'Test User',
email: 'test@example.com',
password: 'password123'
});
mockCouchdbService.updateDocument.mockResolvedValue({
...mockTask,
status: 'completed',
completedBy: {
@@ -240,7 +257,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -274,7 +292,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -309,7 +328,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -345,8 +365,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.findDocumentById.mockResolvedValue(mockTask);
couchdbService.updateDocument.mockResolvedValue({
mockCouchdbService.getDocument.mockResolvedValue(mockTask);
mockCouchdbService.updateDocument.mockResolvedValue({
...mockTask,
status: 'completed',
_rev: '2-def',
@@ -390,7 +410,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -431,7 +452,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);
@@ -469,7 +491,8 @@ describe('Task Model', () => {
updatedAt: '2023-01-01T00:00:00.000Z'
};
couchdbService.createDocument.mockResolvedValue(mockCreated);
mockCouchdbService.initialize.mockResolvedValue(true);
mockCouchdbService.createDocument.mockResolvedValue(mockCreated);
const task = await Task.create(taskData);