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, $('