UNPKG

qgenutils

Version:

A security-first Node.js utility library providing authentication, HTTP operations, URL processing, validation, datetime formatting, and template rendering. Designed as a lightweight alternative to heavy npm packages with comprehensive error handling and

56 lines (46 loc) 1.78 kB
const requireFields = require('./requireFields'); describe('requireFields', () => { let mockRes; beforeEach(() => { mockRes = { status: jest.fn().mockReturnThis(), json: jest.fn().mockReturnThis() }; }); test('should return true when all required fields are present', () => { const obj = { name: 'John', email: 'john@example.com', age: 30 }; const result = requireFields(obj, ['name', 'email', 'age'], mockRes); expect(result).toBe(true); expect(mockRes.status).not.toHaveBeenCalled(); }); test('should return false and send error for missing fields', () => { const obj = { name: 'John', age: 30 }; const result = requireFields(obj, ['name', 'email', 'age'], mockRes); expect(result).toBe(false); expect(mockRes.status).toHaveBeenCalledWith(400); expect(mockRes.json).toHaveBeenCalledWith({ error: 'Validation failed', message: 'Missing required fields: email', missingFields: ['email'] }); }); test('should handle multiple missing fields', () => { const obj = { name: 'John' }; const result = requireFields(obj, ['name', 'email', 'age'], mockRes); expect(result).toBe(false); expect(mockRes.json).toHaveBeenCalledWith({ error: 'Validation failed', message: 'Missing required fields: email, age', missingFields: ['email', 'age'] }); }); test('should handle empty object', () => { const result = requireFields({}, ['name'], mockRes); expect(result).toBe(false); }); test('should handle invalid parameters gracefully', () => { expect(requireFields(null, ['name'], mockRes)).toBe(false); expect(requireFields({}, null, mockRes)).toBe(false); expect(requireFields({}, [], mockRes)).toBe(true); }); });