2016-12-20 01:43:47 +08:00
|
|
|
/* global QUnit, SelectBox */
|
2015-08-26 12:24:55 +08:00
|
|
|
'use strict';
|
|
|
|
|
2016-12-20 01:43:47 +08:00
|
|
|
QUnit.module('admin.SelectBox');
|
2015-04-14 22:55:57 +08:00
|
|
|
|
2016-12-20 01:43:47 +08:00
|
|
|
QUnit.test('init: no options', function(assert) {
|
2020-04-21 08:39:15 +08:00
|
|
|
const $ = django.jQuery;
|
2015-04-14 22:55:57 +08:00
|
|
|
$('<select id="id"></select>').appendTo('#qunit-fixture');
|
|
|
|
SelectBox.init('id');
|
2015-08-26 12:24:55 +08:00
|
|
|
assert.equal(SelectBox.cache.id.length, 0);
|
2015-04-14 22:55:57 +08:00
|
|
|
});
|
|
|
|
|
2016-12-20 01:43:47 +08:00
|
|
|
QUnit.test('filter', function(assert) {
|
2020-04-21 08:39:15 +08:00
|
|
|
const $ = django.jQuery;
|
2015-04-14 22:55:57 +08:00
|
|
|
$('<select id="id"></select>').appendTo('#qunit-fixture');
|
|
|
|
$('<option value="0">A</option>').appendTo('#id');
|
|
|
|
$('<option value="1">B</option>').appendTo('#id');
|
|
|
|
SelectBox.init('id');
|
|
|
|
assert.equal($('#id option').length, 2);
|
|
|
|
SelectBox.filter('id', "A");
|
|
|
|
assert.equal($('#id option').length, 1);
|
|
|
|
assert.equal($('#id option').text(), "A");
|
|
|
|
});
|
2020-05-06 03:40:46 +08:00
|
|
|
|
|
|
|
QUnit.test('preserve scroll position', function(assert) {
|
|
|
|
const $ = django.jQuery;
|
|
|
|
const optionsCount = 100;
|
|
|
|
$('<select id="from_id" multiple></select>').appendTo('#qunit-fixture');
|
|
|
|
$('<select id="to_id" multiple></select>').appendTo('#qunit-fixture');
|
|
|
|
const fromSelectBox = document.getElementById('from_id');
|
|
|
|
const toSelectBox = document.getElementById('to_id');
|
|
|
|
for (let i = 0; i < optionsCount; i++) {
|
|
|
|
fromSelectBox.appendChild(new Option());
|
|
|
|
}
|
|
|
|
SelectBox.init('from_id');
|
|
|
|
SelectBox.init('to_id');
|
|
|
|
const selectedOptions = [97, 98, 99];
|
|
|
|
for (const index of selectedOptions) {
|
|
|
|
fromSelectBox.options[index].selected = true;
|
|
|
|
fromSelectBox.options[index].scrollIntoView();
|
|
|
|
}
|
|
|
|
assert.equal(fromSelectBox.options.length, optionsCount);
|
|
|
|
SelectBox.move('from_id', 'to_id');
|
|
|
|
assert.equal(fromSelectBox.options.length, optionsCount - selectedOptions.length);
|
|
|
|
assert.equal(toSelectBox.options.length, selectedOptions.length);
|
|
|
|
assert.notEqual(fromSelectBox.scrollTop, 0);
|
|
|
|
});
|