diff options
Diffstat (limited to 'public/bower_components/select2/tests/selection/allowClear-tests.js')
-rw-r--r-- | public/bower_components/select2/tests/selection/allowClear-tests.js | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/selection/allowClear-tests.js b/public/bower_components/select2/tests/selection/allowClear-tests.js new file mode 100644 index 0000000..efa132a --- /dev/null +++ b/public/bower_components/select2/tests/selection/allowClear-tests.js @@ -0,0 +1,218 @@ +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' + ); +}); |