aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/select2/tests/selection/search-tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/select2/tests/selection/search-tests.js')
-rw-r--r--public/bower_components/select2/tests/selection/search-tests.js191
1 files changed, 191 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/selection/search-tests.js b/public/bower_components/select2/tests/selection/search-tests.js
new file mode 100644
index 0000000..43345d7
--- /dev/null
+++ b/public/bower_components/select2/tests/selection/search-tests.js
@@ -0,0 +1,191 @@
+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'
+ );
+}); \ No newline at end of file