qmemory
Version:
A comprehensive production-ready Node.js utility library with MongoDB document operations, user ownership enforcement, Express.js HTTP utilities, environment-aware logging, and in-memory storage. Features 96%+ test coverage with comprehensive error handli
77 lines (56 loc) • 3.06 kB
JavaScript
/**
* Unit tests for helper functions in document-ops
* Focuses on validateDocumentUniqueness and hasUniqueFieldChanges
*/
jest.mock('../../lib/database-utils'); // isolate database utils
const { validateDocumentUniqueness, hasUniqueFieldChanges } = require('../../lib/document-ops'); // helpers under test
const { ensureUnique } = require('../../lib/database-utils'); // mocked uniqueness checker
describe('Document Ops Helper Functions', () => { // group helper tests
let mockRes; // holds mock response
beforeEach(() => {
mockRes = createMockResponse(); // fresh mock response for each test
jest.clearAllMocks(); // reset mock history
});
describe('validateDocumentUniqueness', () => { // tests uniqueness validator
test('returns true when ensureUnique passes', async () => {
ensureUnique.mockResolvedValue(true); // simulate unique document
const result = await validateDocumentUniqueness('Model', { title: 'Doc' }, mockRes, 'Duplicate'); // invoke helper
expect(result).toBe(true); // should propagate true
expect(ensureUnique).toHaveBeenCalledWith('Model', { title: 'Doc' }, mockRes, 'Duplicate'); // ensure proper call
});
test('returns false when ensureUnique fails', async () => {
ensureUnique.mockResolvedValue(false); // simulate duplicate detected
const result = await validateDocumentUniqueness('Model', { title: 'Doc' }, mockRes, 'Duplicate'); // invoke helper
expect(result).toBe(false); // should propagate false
expect(ensureUnique).toHaveBeenCalledWith('Model', { title: 'Doc' }, mockRes, 'Duplicate'); // ensure proper call
});
});
describe('hasUniqueFieldChanges', () => { // tests field change detection
test('detects changed unique field', () => {
const doc = { title: 'Old' }; // existing document
const update = { title: 'New' }; // proposed update
const uniqueQuery = { title: 'Old' }; // field considered unique
const result = hasUniqueFieldChanges(doc, update, uniqueQuery); // invoke helper
expect(result).toBe(true); // change should be detected
});
test('returns false when unique field unchanged', () => {
const doc = { title: 'Same', body: 'a' }; // existing document
const update = { body: 'b' }; // update does not touch unique field
const uniqueQuery = { title: 'Same' }; // unique constraint
const result = hasUniqueFieldChanges(doc, update, uniqueQuery); // invoke helper
expect(result).toBe(false); // no unique change
});
test('returns false when uniqueQuery is null', () => {
const doc = { title: 'Old' }; // existing document
const update = { title: 'New' }; // proposed update
const result = hasUniqueFieldChanges(doc, update, null); // call with no unique query
expect(result).toBe(false); // should skip validation
});
});
function createMockResponse() { // simple Express response mock
return {
status: jest.fn().mockReturnThis(),
json: jest.fn().mockReturnThis()
};
}
});