| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 | 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();});test('searching tags does not loose focus', function (assert) {  assert.expect(1);  var asyncDone = assert.async();  var $ = require('jquery');  var Options = require('select2/options');  var Select2 = require('select2/core');  var $select = $(    '<select multiple="multiple">' +    '  <option value="1">Text1</option>' +    ' <option value="2">Text2</option>' +    '</select>'  );  $('#qunit-fixture').append($select);  var select = new Select2($select, {tags: true});  var inputEl = select.selection.$search[0];  inputEl.focus();  select.on('selection:update', function() {    assert.equal(document.activeElement, inputEl);    asyncDone();  });  select.selection.trigger('query', {term: 'f'});  select.selection.trigger('query', {term: 'ff'});});
 |