| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | 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('backspace will remove a choice', function (assert) {  assert.expect(3);  var KEYS = require('select2/keys');  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);  // The unselect event should be triggered at some point  selection.on('unselect', function () {    assert.ok(true, 'A choice was unselected');  });  // Add some selections and render the search  selection.update([    {      id: '1',      text: 'One'    }  ]);  var $search = $selection.find('input');  var $choices = $selection.find('.select2-selection__choice');  assert.equal($search.length, 1, 'The search was visible');  assert.equal($choices.length, 1, 'The choice was rendered');  // Trigger the backspace on the search  var backspace = $.Event('keydown', {    which: KEYS.BACKSPACE  });  $search.trigger(backspace);});test('backspace will set the search text', function (assert) {  assert.expect(3);  var KEYS = require('select2/keys');  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);  // Add some selections and render the search  selection.update([    {      id: '1',      text: 'One'    }  ]);  var $search = $selection.find('input');  var $choices = $selection.find('.select2-selection__choice');  assert.equal($search.length, 1, 'The search was visible');  assert.equal($choices.length, 1, 'The choice was rendered');  // Trigger the backspace on the search  var backspace = $.Event('keydown', {    which: KEYS.BACKSPACE  });  $search.trigger(backspace);  assert.equal($search.val(), 'One', 'The search text was set');});test('updating selection does not shift the focus', function (assert) {  // Check for IE 8, which triggers a false negative during testing  if (window.attachEvent && !window.addEventListener) {    // We must expect 0 assertions or the test will fail    assert.expect(0);    return;  }  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'  );});test('the focus event shifts the focus', function (assert) {  // Check for IE 8, which triggers a false negative during testing  if (window.attachEvent && !window.addEventListener) {    // We must expect 0 assertions or the test will fail    assert.expect(0);    return;  }  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);  // The search should not be automatically focused  var $search = $selection.find('input');  assert.notEqual(    document.activeElement,    $search[0],    'The search had focus originally'  );  assert.equal($search.length, 1, 'The search was not visible');  // Focus the container  container.trigger('focus');  // Make sure it focuses the search  assert.equal($search.length, 1, 'The search box disappeared');  assert.equal(    document.activeElement,    $search[0],    'The search did not have focus originally'  );});
 |