/* global QUnit, SelectBox */
"use strict";
QUnit.module("admin.SelectBox");
QUnit.test("init: no options", function (assert) {
const $ = django.jQuery;
$('').appendTo("#qunit-fixture");
SelectBox.init("id");
assert.equal(SelectBox.cache.id.length, 0);
});
QUnit.test("filter", function (assert) {
const $ = django.jQuery;
$('').appendTo("#qunit-fixture");
$('').appendTo("#id");
$('').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");
});
QUnit.test("preserve scroll position", function (assert) {
const $ = django.jQuery;
const optionsCount = 100;
$('').appendTo("#qunit-fixture");
$('').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);
});
QUnit.test("retain optgroups", function (assert) {
const $ = django.jQuery;
$('').appendTo("#qunit-fixture");
const grp = $('").appendTo("#id");
$('').appendTo("#id");
SelectBox.init("id");
SelectBox.redisplay("id");
assert.equal($("#id option").length, 2);
assert.equal($("#id optgroup").length, 1);
});
QUnit.test("sort optgroups", function (assert) {
const $ = django.jQuery;
$('').appendTo("#qunit-fixture");
// Add optgroups in non-alphabetical order
const grp2 = $('