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) {
- 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'
- );
- });
|