diff --git a/tests/selection/search-tests.js b/tests/selection/search-tests.js new file mode 100644 index 00000000..957e1304 --- /dev/null +++ b/tests/selection/search-tests.js @@ -0,0 +1,51 @@ +module('Selection containers - Inline search'); + +var MultipleSelection = require('select2/selection/multiple'); +var InlineSearch = require('select2/selection/search'); + +var $ = require('jquery'); +var Options = require('select2/options'); +var Utils = require('select2/utils'); + +var options = new Options({}); + +test('updating selection does not shift the focus', function (assert) { + var $container = $('#qunit-fixture .event-container'); + var container = new MockContainer(); + + var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch); + + var $element = $('#qunit-fixture .multiple'); + var selection = new CustomSelection($element, options); + + var $selection = selection.render(); + selection.bind(container, $container); + + // Update the selection so the search is rendered + selection.update([]); + + // Make it visible so the browser can place focus on the search + $container.append($selection); + + var $search = $selection.find('input'); + $search.trigger('focus'); + + assert.equal($search.length, 1, 'The search was not visible'); + + assert.equal( + document.activeElement, + $search[0], + 'The search did not have focus originally' + ); + + // Trigger an update, this should redraw the search box + selection.update([]); + + assert.equal($search.length, 1, 'The search box disappeared'); + + assert.equal( + document.activeElement, + $search[0], + 'The search did not have focus after the selection was updated' + ); +}); diff --git a/tests/unit.html b/tests/unit.html index b7eac54b..f130199c 100644 --- a/tests/unit.html +++ b/tests/unit.html @@ -79,6 +79,7 @@ +