Viewing File: /usr/local/cpanel/3rdparty/share/angular-ui-scroll/1.6.1/test/VisibilitySwitchingSpec.js
/*global describe, beforeEach, module, it, expect, runTest */
describe('uiScroll', function () {
'use strict';
beforeEach(module('ui.scroll'));
beforeEach(module('ui.scroll.test.datasources'));
var checkContent = function (viewport, count) {
for (var i = 1; i < count - 1; i++) {
var row = viewport.children()[i];
expect(row.tagName.toLowerCase()).toBe('div');
expect(row.innerHTML).toBe(i + ': item' + i);
}
};
describe('viewport visibility changing', function () {
var scrollSettings = { datasource: 'myMultipageDatasource', viewportHeight: 200, itemHeight: 40, bufferSize: 3, adapter: 'adapter' };
var onePackItemsCount = 3 + 2;
var twoPacksItemsCount = 3 * 3 + 2;
it('should create 9 divs with data (+ 2 padding divs)', function () {
runTest(scrollSettings,
function (viewport) {
expect(viewport.children().length).toBe(twoPacksItemsCount);
expect(viewport.scrollTop()).toBe(0);
expect(viewport.children().css('height')).toBe('0px');
expect(angular.element(viewport.children()[twoPacksItemsCount - 1]).css('height')).toBe('0px');
checkContent(viewport, twoPacksItemsCount);
}
);
});
it('should preserve elements after visibility switched off (display:none)', function () {
runTest(scrollSettings,
function (viewport) {
viewport.css('display','none');
expect(viewport.children().length).toBe(twoPacksItemsCount);
expect(viewport.scrollTop()).toBe(0);
expect(viewport.children().css('height')).toBe('0px');
expect(angular.element(viewport.children()[twoPacksItemsCount - 1]).css('height')).toBe('0px');
checkContent(viewport, twoPacksItemsCount);
}
);
});
it('should only load one batch with visibility switched off (display:none)', function () {
runTest(scrollSettings,
function (viewport, scope, $timeout) {
viewport.css('display','none');
scope.adapter.reload();
$timeout.flush();
expect(viewport.children().length).toBe(onePackItemsCount);
expect(viewport.scrollTop()).toBe(0);
expect(viewport.children().css('height')).toBe('0px');
expect(angular.element(viewport.children()[onePackItemsCount - 1]).css('height')).toBe('0px');
checkContent(viewport, onePackItemsCount);
}
);
});
it('should load full set after visibility switched back on', function () {
runTest(scrollSettings,
function (viewport, scope, $timeout) {
viewport.css('display','none');
scope.adapter.reload();
$timeout.flush();
viewport.css('display','block');
scope.$apply();
$timeout.flush();
expect(viewport.children().length).toBe(twoPacksItemsCount);
expect(viewport.scrollTop()).toBe(0);
expect(viewport.children().css('height')).toBe('0px');
expect(angular.element(viewport.children()[twoPacksItemsCount - 1]).css('height')).toBe('0px');
checkContent(viewport, onePackItemsCount);
}
);
});
});
describe('items visibility changing', function () {
var scrollSettings = { datasource: 'myMultipageDatasource', viewportHeight: 200, itemHeight: '0', bufferSize: 3, adapter: 'adapter' };
var onePackItemsCount = 3 + 2;
var twoPacksItemsCount = 3 * 2 + 2;
it('should only load one batch with items height = 0', function () {
runTest(scrollSettings,
function (viewport) {
expect(viewport.children().length).toBe(onePackItemsCount);
expect(viewport.scrollTop()).toBe(0);
checkContent(viewport, onePackItemsCount);
}
);
});
it('should load full set after height of some item switched to non-zero', function () {
runTest(scrollSettings,
function (viewport, scope, $timeout) {
angular.element(viewport.children()[onePackItemsCount - 1]).css('height', 40);
expect(angular.element(viewport.children()[onePackItemsCount - 1]).css('height')).toBe('40px');
scope.$apply();
//$timeout.flush();
$timeout(function() {
expect(viewport.children().length).toBe(twoPacksItemsCount);
expect(viewport.scrollTop()).toBe(0);
checkContent(viewport, twoPacksItemsCount);
}, 0);
}
);
});
});
});
Back to Directory
File Manager