diff options
| author | tapan gujjar <tapan@stablehacks.com> | 2020-05-05 15:40:46 -0400 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-07-01 16:31:38 +0200 |
| commit | 2d67222472f80f251607ae1b720527afceba06ad (patch) | |
| tree | 907832c80ca024ef8ff96430c98f53aa21016e4e /js_tests | |
| parent | 1e3ceb485eaf8c5055f4adea8fc553126c8fb440 (diff) | |
Fixed #31522 -- Made admin's SelectBox preserve scroll position.
Diffstat (limited to 'js_tests')
| -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); +}); |
