| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
							- module('Selection containers - Placeholders - Allow clear');
 
- var Placeholder = require('select2/selection/placeholder');
 
- var AllowClear = require('select2/selection/allowClear');
 
- var SingleSelection = require('select2/selection/single');
 
- var $ = require('jquery');
 
- var Options = require('select2/options');
 
- var Utils = require('select2/utils');
 
- var AllowClearPlaceholder = Utils.Decorate(
 
-   Utils.Decorate(SingleSelection, Placeholder),
 
-   AllowClear
 
- );
 
- var allowClearOptions = new Options({
 
-   placeholder: {
 
-     id: 'placeholder',
 
-     text: 'This is the placeholder'
 
-   },
 
-   allowClear: true
 
- });
 
- test('clear is not displayed for single placeholder', function (assert) {
 
-   var selection = new AllowClearPlaceholder(
 
-     $('#qunit-fixture .single-with-placeholder'),
 
-     allowClearOptions
 
-   );
 
-   var $selection = selection.render();
 
-   selection.update([{
 
-     id: 'placeholder'
 
-   }]);
 
-   assert.equal(
 
-     $selection.find('.select2-selection__clear').length,
 
-     0,
 
-     'The clear icon should not be displayed'
 
-   );
 
- });
 
- test('clear is not displayed for multiple placeholder', function (assert) {
 
-   var selection = new AllowClearPlaceholder(
 
-     $('#qunit-fixture .single-with-placeholder'),
 
-     allowClearOptions
 
-   );
 
-   var $selection = selection.render();
 
-   selection.update([]);
 
-   assert.equal(
 
-     $selection.find('.select2-selection__clear').length,
 
-     0,
 
-     'The clear icon should not be displayed'
 
-   );
 
- });
 
- test('clear is displayed for placeholder', function (assert) {
 
-   var selection = new AllowClearPlaceholder(
 
-     $('#qunit-fixture .single-with-placeholder'),
 
-     allowClearOptions
 
-   );
 
-   var $selection = selection.render();
 
-   selection.update([{
 
-     id: 'one',
 
-     test: 'one'
 
-   }]);
 
-   assert.equal(
 
-     $selection.find('.select2-selection__clear').length,
 
-     1,
 
-     'The clear icon should be displayed'
 
-   );
 
- });
 
- test('clicking clear will set the placeholder value', function (assert) {
 
-   var $element = $('#qunit-fixture .single-with-placeholder');
 
-   var selection = new AllowClearPlaceholder(
 
-     $element,
 
-     allowClearOptions
 
-   );
 
-   var container = new MockContainer();
 
-   var $selection = selection.render();
 
-   selection.bind(container, $('<div></div'));
 
-   $element.val('One');
 
-   selection.update([{
 
-     id: 'One',
 
-     text: 'One'
 
-   }]);
 
-   var $remove = $selection.find('.select2-selection__clear');
 
-   $remove.trigger('mousedown');
 
-   assert.equal(
 
-     $element.val(),
 
-     'placeholder',
 
-     'The value should have been reset to the placeholder'
 
-   );
 
- });
 
- test('clicking clear will trigger the unselect event', function (assert) {
 
-   expect(3);
 
-   var $element = $('#qunit-fixture .single-with-placeholder');
 
-   var selection = new AllowClearPlaceholder(
 
-     $element,
 
-     allowClearOptions
 
-   );
 
-   var container = new MockContainer();
 
-   var $selection = selection.render();
 
-   selection.bind(container, $('<div></div'));
 
-   $element.val('One');
 
-   selection.update([{
 
-     id: 'One',
 
-     text: 'One'
 
-   }]);
 
-   selection.on('unselect', function (ev) {
 
-     assert.ok(
 
-       'data' in ev && ev.data,
 
-       'The event should have been triggered with the data property'
 
-     );
 
-     assert.ok(
 
-       $.isPlainObject(ev.data),
 
-       'The data should be an object'
 
-     );
 
-     assert.equal(
 
-       ev.data.id,
 
-       'One',
 
-       'The previous object should be unselected'
 
-     );
 
-   });
 
-   var $remove = $selection.find('.select2-selection__clear');
 
-   $remove.trigger('mousedown');
 
- });
 
- test('preventing the unselect event cancels the clearing', function (assert) {
 
-   var $element = $('#qunit-fixture .single-with-placeholder');
 
-   var selection = new AllowClearPlaceholder(
 
-     $element,
 
-     allowClearOptions
 
-   );
 
-   var container = new MockContainer();
 
-   var $selection = selection.render();
 
-   selection.bind(container, $('<div></div'));
 
-   $element.val('One');
 
-   selection.update([{
 
-     id: 'One',
 
-     text: 'One'
 
-   }]);
 
-   selection.on('unselect', function (ev) {
 
-     ev.prevented = true;
 
-   });
 
-   var $remove = $selection.find('.select2-selection__clear');
 
-   $remove.trigger('mousedown');
 
-   assert.equal(
 
-     $element.val(),
 
-     'One',
 
-     'The placeholder should not have been set'
 
-   );
 
- });
 
- test('clear does not work when disabled', function (assert) {
 
-   var $element = $('#qunit-fixture .single-with-placeholder');
 
-   var selection = new AllowClearPlaceholder(
 
-     $element,
 
-     allowClearOptions
 
-   );
 
-   var container = new MockContainer();
 
-   var $selection = selection.render();
 
-   selection.bind(container, $('<div></div'));
 
-   selection.update([{
 
-     id: 'One',
 
-     text: 'One'
 
-   }]);
 
-   $element.val('One');
 
-   selection.options.set('disabled', true);
 
-   var $remove = $selection.find('.select2-selection__clear');
 
-   $remove.trigger('mousedown');
 
-   assert.equal(
 
-     $element.val(),
 
-     'One',
 
-     'The placeholder should not have been set'
 
-   );
 
- });
 
 
  |