diff options
Diffstat (limited to 'js_tests/admin/SelectBox.test.js')
| -rw-r--r-- | js_tests/admin/SelectBox.test.js | 24 |
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); +}); |
