jest.dontMock('../general_utils.js'); let GeneralUtils = require('../general_utils') let sanitize = GeneralUtils.sanitize; let sumNumList = GeneralUtils.sumNumList; let formatText = GeneralUtils.formatText; let mergeOptions = GeneralUtils.mergeOptions; describe('GeneralUtils', () => { it('should sanitize object (delete all empty strings, null and undefined values)', () => { let obj = { definedValue: 1, undefinedValue: undefined, nullValue: null, emptyString: '', notEmptyString: 'Something else' }; let sanitizedObj = sanitize(obj); expect(sanitizedObj.definedValue).toBeDefined(); expect(sanitizedObj.notEmptyString).toBeDefined(); expect(sanitizedObj.undefinedValue).toBeUndefined(); expect(sanitizedObj.nullValue).toBeUndefined(); expect(sanitizedObj.emptyString).toBeUndefined(); }); it('should sum up all values of a list', () => { expect(sumNumList([1,2,3])).toBe(6); expect(sumNumList([1,-2,3])).toBe(2); expect(sumNumList(['string',2,3])).toBe(5); expect(sumNumList([0,0,0])).toBe(0); expect(sumNumList([() => 'asdasd',2,3])).toBe(5); }); it('should format a string with inline variables to a plain string using an arbitrary number of arguments', () => { expect(formatText('Number %d', 1)).toBe('Number 1'); expect(formatText('Number %s', 1)).toBe('Number 1'); expect(formatText('Number %d %s', '1', 2)).toBe('Number 1 2'); expect(formatText('Number %d %d %d %s %d %d %d', 1, 2, 3, 4, 5, 6, 7)).toBe('Number 1 2 3 4 5 6 7'); }); it('should merge n objects keys and values and throw an error on matching-keys-overwrite', () => { let obj1 = { name: 'Obj1', someValue: 'hello' }; let obj2 = { othername: 'Obj2', someValue: 'world' }; let obj3 = { othername: 'Obj3', someFn: () => parseFloat(0.9), numberValue: 2 }; expect(() => mergeOptions(obj1, obj2)).toThrow(); // jasmine actually does a deep comparison for functions as well expect(mergeOptions(obj1, obj3)).toEqual({ name: obj1.name, someValue: obj1.someValue, othername: obj3.othername, someFn: obj3.someFn, numberValue: obj3.numberValue }); }); });