summaryrefslogtreecommitdiff
path: root/js_tests
diff options
context:
space:
mode:
authortapan gujjar <tapan@stablehacks.com>2020-05-05 15:40:46 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-07-01 16:31:38 +0200
commit2d67222472f80f251607ae1b720527afceba06ad (patch)
tree907832c80ca024ef8ff96430c98f53aa21016e4e /js_tests
parent1e3ceb485eaf8c5055f4adea8fc553126c8fb440 (diff)
Fixed #31522 -- Made admin's SelectBox preserve scroll position.
Diffstat (limited to 'js_tests')
-rw-r--r--js_tests/admin/SelectBox.test.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/js_tests/admin/SelectBox.test.js b/js_tests/admin/SelectBox.test.js
index 3de7623691..7d127b5d59 100644
--- a/js_tests/admin/SelectBox.test.js
+++ b/js_tests/admin/SelectBox.test.js
@@ -21,3 +21,27 @@ QUnit.test('filter', function(assert) {
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;
+ $('<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);
+});