aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/select2/tests/integration/dom-changes.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/select2/tests/integration/dom-changes.js')
-rw-r--r--public/bower_components/select2/tests/integration/dom-changes.js257
1 files changed, 257 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/integration/dom-changes.js b/public/bower_components/select2/tests/integration/dom-changes.js
new file mode 100644
index 0000000..2d89ae2
--- /dev/null
+++ b/public/bower_components/select2/tests/integration/dom-changes.js
@@ -0,0 +1,257 @@
+module('DOM integration');
+
+test('adding a new unselected option changes nothing', function (assert) {
+ // Any browsers which support mutation observers will not trigger the event
+ var expected = 4;
+ if (window.MutationObserver) {
+ expected = 2;
+ } else if (!window.addEventListener) {
+ expected = 2;
+ }
+
+ assert.expect(expected);
+
+ var asyncDone = null;
+ var syncDone = assert.async();
+
+ if (expected != 2) {
+ asyncDone = assert.async();
+ }
+
+ var $ = require('jquery');
+ var Options = require('select2/options');
+ var Select2 = require('select2/core');
+
+ var $select = $(
+ '<select>' +
+ '<option>One</option>' +
+ '<option>Two</option>' +
+ '</select>'
+ );
+
+ $('#qunit-fixture').append($select);
+
+ var select = new Select2($select);
+
+ select.on('selection:update', function (args) {
+ assert.equal(
+ args.data.length,
+ 1,
+ 'There was more than one selection'
+ );
+
+ assert.equal(
+ args.data[0].id,
+ 'One',
+ 'The selection changed to something other than One'
+ );
+
+ if (expected != 2) {
+ asyncDone();
+ }
+ });
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ var $option = $('<option>Three</option>');
+
+ $select.append($option);
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ syncDone();
+});
+
+test('adding a new selected option changes the value', function (assert) {
+ // handle IE 8 not being supported
+ var expected = 4;
+ if (!window.MutationObserver && !window.addEventListener) {
+ expected = 2;
+ }
+
+ assert.expect(expected);
+
+ var asyncDone = null;
+ var syncDone = assert.async();
+
+ if (expected != 2) {
+ asyncDone = assert.async();
+ }
+
+ var $ = require('jquery');
+ var Options = require('select2/options');
+ var Select2 = require('select2/core');
+
+ var $select = $(
+ '<select>' +
+ '<option>One</option>' +
+ '<option>Two</option>' +
+ '</select>'
+ );
+
+ $('#qunit-fixture').append($select);
+
+ var select = new Select2($select);
+
+ select.on('selection:update', function (args) {
+ assert.equal(
+ args.data.length,
+ 1,
+ 'There was more than one selection'
+ );
+
+ assert.equal(
+ args.data[0].id,
+ 'Three',
+ 'The selection did not change to Three'
+ );
+
+ if (expected != 2) {
+ asyncDone();
+ }
+ });
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ var $option = $('<option selected>Three</option>');
+
+ $select.append($option);
+
+ assert.equal(
+ $select.val(),
+ 'Three'
+ );
+
+ syncDone();
+});
+
+test('removing an unselected option changes nothing', function (assert) {
+ // Any browsers which support mutation observers will not trigger the event
+ var expected = 4;
+ if (!window.MutationObserver && !window.addEventListener) {
+ expected = 2;
+ }
+
+ assert.expect(expected);
+
+ var asyncDone = null;
+ var syncDone = assert.async();
+
+ if (expected != 2) {
+ asyncDone = assert.async();
+ }
+
+ var $ = require('jquery');
+ var Options = require('select2/options');
+ var Select2 = require('select2/core');
+
+ var $select = $(
+ '<select>' +
+ '<option>One</option>' +
+ '<option>Two</option>' +
+ '</select>'
+ );
+
+ $('#qunit-fixture').append($select);
+
+ var select = new Select2($select);
+
+ select.on('selection:update', function (args) {
+ assert.equal(
+ args.data.length,
+ 1,
+ 'There was more than one selection'
+ );
+
+ assert.equal(
+ args.data[0].id,
+ 'One',
+ 'The selection changed to something other than One'
+ );
+
+ if (expected != 2) {
+ asyncDone();
+ }
+ });
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ $select.children().eq(1).remove();
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ syncDone();
+});
+
+test('removing a selected option changes the value', function (assert) {
+ // handle IE 8 not being supported
+ var expected = 3;
+ if (!window.MutationObserver && !window.addEventListener) {
+ expected = 2;
+ }
+
+ assert.expect(expected);
+
+ var asyncDone = null;
+ var syncDone = assert.async();
+
+ if (expected != 2) {
+ asyncDone = assert.async();
+ }
+
+ var $ = require('jquery');
+ var Options = require('select2/options');
+ var Select2 = require('select2/core');
+
+ var $select = $(
+ '<select>' +
+ '<option>One</option>' +
+ '<option>Two</option>' +
+ '</select>'
+ );
+
+ $('#qunit-fixture').append($select);
+
+ var select = new Select2($select);
+
+ select.on('selection:update', function (args) {
+ assert.equal(
+ args.data.length,
+ 1,
+ 'There was more than one selection'
+ );
+
+ if (expected != 2) {
+ asyncDone();
+ }
+ });
+
+ assert.equal(
+ $select.val(),
+ 'One'
+ );
+
+ $select.children().eq(0).remove();
+
+ assert.equal(
+ $select.val(),
+ 'Two'
+ );
+
+ syncDone();
+}); \ No newline at end of file