forked from Gitlink/forgeplus-react
231 lines
6.1 KiB
JavaScript
231 lines
6.1 KiB
JavaScript
"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]);
|
|
});
|
|
}); |