|
@@ -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();
|
|
|
+});
|