diff options
Diffstat (limited to 'public/bower_components/select2/tests/integration/dom-changes.js')
-rw-r--r-- | public/bower_components/select2/tests/integration/dom-changes.js | 257 |
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 |