UNPKG

react-virtualized

Version:

React components for efficiently rendering large, scrollable lists and tabular data

219 lines (218 loc) 6.24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _createCallbackMemoizer = _interopRequireDefault(require("./createCallbackMemoizer")); describe('createCallbackMemoizer', function () { function OnRowsRendered() { var _numCalls = 0; var _overscanStartIndex; var _overscanStopIndex; var _startIndex; var _stopIndex; return { numCalls: function numCalls() { return _numCalls; }, overscanStartIndex: function overscanStartIndex() { return _overscanStartIndex; }, overscanStopIndex: function overscanStopIndex() { return _overscanStopIndex; }, startIndex: function startIndex() { return _startIndex; }, stopIndex: function stopIndex() { return _stopIndex; }, update: function update(params) { _overscanStartIndex = params.overscanStartIndex; _overscanStopIndex = params.overscanStopIndex; _startIndex = params.startIndex; _stopIndex = params.stopIndex; _numCalls++; } }; } it('should not call onRowsRendered if startIndex or stopIndex are invalid', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: util.update, indices: { startIndex: 0, stopIndex: undefined } }); expect(util.numCalls()).toEqual(0); helper({ callback: util.update, indices: { startIndex: undefined, stopIndex: 0 } }); expect(util.numCalls()).toEqual(0); }); it('should call onRowsRendered if startIndex and stopIndex are valid', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: util.update, indices: { startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); expect(util.startIndex()).toEqual(0); expect(util.stopIndex()).toEqual(1); }); it('should call onRowsRendered if startIndex and stopIndex are invalid but :requireAllKeys is false', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(false); helper({ callback: util.update, indices: { startIndex: undefined, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); expect(util.startIndex()).toEqual(undefined); expect(util.stopIndex()).toEqual(1); }); it('should not call onRowsRendered if startIndex or stopIndex have not changed', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: util.update, indices: { startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); expect(util.startIndex()).toEqual(0); expect(util.stopIndex()).toEqual(1); helper({ callback: util.update, indices: { startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); }); it('should not call onRowsRendered if startIndex or stopIndex have changed', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: util.update, indices: { startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); expect(util.startIndex()).toEqual(0); expect(util.stopIndex()).toEqual(1); helper({ callback: util.update, indices: { startIndex: 1, stopIndex: 1 } }); expect(util.numCalls()).toEqual(2); expect(util.startIndex()).toEqual(1); expect(util.stopIndex()).toEqual(1); helper({ callback: util.update, indices: { startIndex: 1, stopIndex: 2 } }); expect(util.numCalls()).toEqual(3); expect(util.startIndex()).toEqual(1); expect(util.stopIndex()).toEqual(2); }); it('should call onRowsRendered if :overscanCellsCount changes', function () { var util = new OnRowsRendered(); var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: util.update, indices: { overscanStartIndex: 0, overscanStopIndex: 2, startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(1); expect(util.startIndex()).toEqual(0); expect(util.stopIndex()).toEqual(1); expect(util.overscanStartIndex()).toEqual(0); expect(util.overscanStopIndex()).toEqual(2); helper({ callback: util.update, indices: { overscanStartIndex: 0, overscanStopIndex: 3, startIndex: 0, stopIndex: 1 } }); expect(util.numCalls()).toEqual(2); expect(util.startIndex()).toEqual(0); expect(util.stopIndex()).toEqual(1); expect(util.overscanStartIndex()).toEqual(0); expect(util.overscanStopIndex()).toEqual(3); }); it('should support an array of indices', function () { var numCalls = 0; var indices; var callback = function callback(params) { indices = params; numCalls++; }; var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: callback, indices: [0, 1, 2] }); expect(numCalls).toEqual(1); expect(indices).toEqual([0, 1, 2]); helper({ callback: callback, indices: [0, 1] }); expect(numCalls).toEqual(2); expect(indices).toEqual([0, 1]); }); it('should support an attribute containing an array of indices', function () { var numCalls = 0; var indices; var callback = function callback(params) { indices = params.indices; numCalls++; }; var helper = (0, _createCallbackMemoizer["default"])(); helper({ callback: callback, indices: { indices: [0, 1, 2] } }); expect(numCalls).toEqual(1); expect(indices).toEqual([0, 1, 2]); helper({ callback: callback, indices: { indices: [0, 1] } }); expect(numCalls).toEqual(2); expect(indices).toEqual([0, 1]); }); });