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