import { jest } from '@jest/globals'; jest.unstable_mockModule('../../../database/database.js', () => ({ listObjects: jest.fn(), getObject: jest.fn(), editObject: jest.fn(), newObject: jest.fn(), deleteObject: jest.fn(), listObjectsByProperties: jest.fn(), getModelStats: jest.fn(), getModelHistory: jest.fn(), })); jest.unstable_mockModule('../../../database/schemas/management/documentjob.schema.js', () => ({ documentJobModel: { modelName: 'DocumentJob' }, })); jest.unstable_mockModule('log4js', () => ({ default: { getLogger: () => ({ level: 'info', debug: jest.fn(), error: jest.fn(), warn: jest.fn(), trace: jest.fn(), }), }, })); const { listDocumentJobsRouteHandler, getDocumentJobRouteHandler, newDocumentJobRouteHandler, } = await import('../documentjobs.js'); const { listObjects, getObject, newObject } = await import('../../../database/database.js'); const { documentJobModel } = await import( '../../../database/schemas/management/documentjob.schema.js' ); describe('Document Job Service Route Handlers', () => { let req, res; beforeEach(() => { req = { params: {}, query: {}, body: {}, user: { id: 'test-user-id' }, }; res = { send: jest.fn(), status: jest.fn().mockReturnThis(), }; jest.clearAllMocks(); }); describe('listDocumentJobsRouteHandler', () => { it('should list document jobs', async () => { const mockResult = [{ _id: '1', state: { type: 'pending' } }]; listObjects.mockResolvedValue(mockResult); await listDocumentJobsRouteHandler(req, res); expect(listObjects).toHaveBeenCalledWith( expect.objectContaining({ model: documentJobModel }) ); expect(res.send).toHaveBeenCalledWith(mockResult); }); }); describe('newDocumentJobRouteHandler', () => { it('should create a new document job', async () => { req.body = { documentTemplate: 'template123', documentPrinter: 'printer123' }; const mockJob = { _id: '456', ...req.body }; newObject.mockResolvedValue(mockJob); await newDocumentJobRouteHandler(req, res); expect(newObject).toHaveBeenCalled(); expect(res.send).toHaveBeenCalledWith(mockJob); }); }); });