mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-07 23:16:52 +08:00
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
describe('List View', function() {
|
|
var h, listEl;
|
|
beforeEach(function() {
|
|
h = document.createElement('div');
|
|
h.id = 'content';
|
|
h.className = 'scroll'
|
|
var l = document.createElement('ul');
|
|
l.className = 'list scroll';
|
|
h.appendChild(l);
|
|
|
|
listEl = l;
|
|
|
|
for(var i = 0; i < 1000; i++) {
|
|
var li = document.createElement('li');
|
|
li.style.height = '50px';
|
|
l.appendChild(li);
|
|
}
|
|
|
|
document.body.style.height='1000px';
|
|
|
|
document.body.appendChild(h);
|
|
});
|
|
|
|
it('Should init', function() {
|
|
var list = new ionic.views.ListView({
|
|
el: h,
|
|
});
|
|
});
|
|
|
|
it('Should init item height from CSS', function() {
|
|
var list = new ionic.views.ListView({
|
|
el: h,
|
|
listEl: listEl,
|
|
isVirtual: true,
|
|
});
|
|
|
|
expect(list.itemHeight).toEqual(50);
|
|
});
|
|
|
|
it('Should support virtual scrolling', function() {
|
|
var list = new ionic.views.ListView({
|
|
el: h,
|
|
listEl: listEl,
|
|
isVirtual: true,
|
|
itemHeight: 50,
|
|
virtualRemoveThreshold: -200,
|
|
virtualAddThreshold: 200
|
|
});
|
|
list.renderViewport = function(high, low, start, end) {
|
|
};
|
|
|
|
var spy = spyOn(list, 'renderViewport');
|
|
|
|
var height = h.scrollHeight;
|
|
var itemHeight = list.itemHeight;
|
|
var totalItems = height / itemHeight;
|
|
var viewportHeight = list.el.parentNode.offsetHeight;
|
|
var itemsPerViewport = (viewportHeight + -list.virtualRemoveThreshold + list.virtualAddThreshold) / itemHeight;
|
|
|
|
// set up scroll top
|
|
var scrollTop = 1000;
|
|
var start = (scrollTop + list.virtualRemoveThreshold) / itemHeight;
|
|
var end = (scrollTop + viewportHeight + list.virtualAddThreshold) / itemHeight;
|
|
|
|
list.scrollTo(0, scrollTop);
|
|
|
|
// Given a scrollTop of 1000px, an item height of 50px, and the given += 200px
|
|
// render window, renderViewport should be called with the following
|
|
// computed values:
|
|
expect(list.renderViewport).toHaveBeenCalledWith(scrollTop + list.virtualRemoveThreshold,
|
|
scrollTop + viewportHeight + list.virtualAddThreshold, start, end);
|
|
});
|
|
|
|
});
|