QUnit.module('Results - Infinite scrolling'); QUnit.test('loadingMore is triggered even without a scrollbar', function (assert) { assert.expect(1); var $ = require('jquery'); var $select = $(''); var $container = $(''); var container = new MockContainer(); var Utils = require('select2/utils'); var Options = require('select2/options'); var Results = require('select2/results'); var InfiniteScroll = require('select2/dropdown/infiniteScroll'); var InfiniteScrollResults = Utils.Decorate(Results, InfiniteScroll); var results = new InfiniteScrollResults($select, new Options({})); // Fake the data adapter for the `setClasses` method results.data = {}; results.data.current = function (callback) { callback([{ id: 'test' }]); }; $('#qunit-fixture').append(results.render()); results.bind(container, $container); results.on('query:append', function () { assert.ok(true, 'It tried to load more immediately'); }); container.trigger('results:all', { data: { results: [ { id: 'test', text: 'Test' } ], pagination: { more: true } } }); }); QUnit.test('loadingMore is not triggered without scrolling', function (assert) { assert.expect(0); var $ = require('jquery'); var $select = $(''); var $container = $(''); var container = new MockContainer(); var Utils = require('select2/utils'); var Options = require('select2/options'); var Results = require('select2/results'); var InfiniteScroll = require('select2/dropdown/infiniteScroll'); var InfiniteScrollResults = Utils.Decorate(Results, InfiniteScroll); var results = new InfiniteScrollResults($select, new Options({})); // Fake the data adapter for the `setClasses` method results.data = {}; results.data.current = function (callback) { callback([{ id: 'test' }]); }; var $results = results.render(); $('#qunit-fixture').append($results); $results.css('max-height', '100px'); results.bind(container, $container); results.on('query:append', function () { assert.ok(false, 'It tried to load more immediately'); }); container.trigger('results:all', { data: { results: [ { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' }, { id: 'test', text: 'Test' } ], pagination: { more: true } } }); });