@skele/core
Version:
Core package of the Skele framework. Element definitions, registrations and traversal.
1 lines • 2.77 kB
JavaScript
;var _memoize=_interopRequireDefault(require("../memoize"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance");}function _iterableToArray(iter){if((typeof Symbol==="function"?Symbol.iterator:"@@iterator")in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}}describe('memoize',function(){var finder=jest.fn(function(key){return Array.isArray(key)?key.length:1;});var misser=jest.fn(function(){return undefined;});afterEach(function(){finder.mockClear();misser.mockClear();});test('found (defined) entries',function(){var memoized=(0,_memoize.default)(finder);expect(memoized('foo')).toEqual(1);expect(finder).toHaveBeenCalledTimes(1);expect(memoized('foo')).toEqual(1);expect(finder).toHaveBeenCalledTimes(1);expect(memoized(['foo','bar'])).toEqual(2);expect(finder).toHaveBeenCalledTimes(2);expect(memoized(['foo','bar'])).toEqual(2);expect(finder).toHaveBeenCalledTimes(2);});test('missing (undefined) entries',function(){var memoized=(0,_memoize.default)(misser);expect(memoized('foo')).toBeUndefined();expect(misser).toHaveBeenCalledTimes(1);expect(memoized('foo')).toBeUndefined();expect(misser).toHaveBeenCalledTimes(1);expect(memoized(['foo','bar'])).toBeUndefined();expect(misser).toHaveBeenCalledTimes(2);expect(memoized(['foo','bar'])).toBeUndefined();expect(misser).toHaveBeenCalledTimes(2);});test('custom cachekey extractor',function(){var fn=jest.fn(function(key){return[key.kind,'.',key.action];});var memoized=(0,_memoize.default)(fn,function(key){return[].concat(_toConsumableArray(Array.isArray(key.kind)?key.kind:[key.kind]),['$$sep$$',key.action]);});expect(memoized({kind:'foo',action:'update'})).toEqual(['foo','.','update']);expect(fn).toHaveBeenCalledTimes(1);expect(memoized({kind:'foo',action:'update'})).toEqual(['foo','.','update']);expect(fn).toHaveBeenCalledTimes(1);fn.mockClear();expect(memoized({kind:['foo','bar'],action:'update'})).toEqual([['foo','bar'],'.','update']);expect(fn).toHaveBeenCalledTimes(1);expect(memoized({kind:['foo','bar'],action:'update'})).toEqual([['foo','bar'],'.','update']);expect(fn).toHaveBeenCalledTimes(1);fn.mockClear();expect(memoized({kind:'foo',action:'update2'})).toEqual(['foo','.','update2']);expect(fn).toHaveBeenCalledTimes(1);expect(memoized({kind:'foo',action:'update2'})).toEqual(['foo','.','update2']);expect(fn).toHaveBeenCalledTimes(1);});});