aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/select2/tests/dropdown
diff options
context:
space:
mode:
authorMarvin Borner2018-07-13 19:06:45 +0200
committerMarvin Borner2018-07-13 19:06:45 +0200
commit6fcfb7c04d32e1c8b26a312295bf7ac3ec2d2ad7 (patch)
treedbc87ef16fa01d5d99116de283592b8fe5e02944 /public/bower_components/select2/tests/dropdown
parentdfd839f27146df0ad0494e11734fc7d310c70ebf (diff)
Fixed many permissions and began admin interface
Diffstat (limited to 'public/bower_components/select2/tests/dropdown')
-rw-r--r--public/bower_components/select2/tests/dropdown/dropdownCss-tests.js104
-rw-r--r--public/bower_components/select2/tests/dropdown/positioning-tests.js177
-rw-r--r--public/bower_components/select2/tests/dropdown/selectOnClose-tests.js137
-rw-r--r--public/bower_components/select2/tests/dropdown/stopPropagation-tests.js33
4 files changed, 451 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/dropdown/dropdownCss-tests.js b/public/bower_components/select2/tests/dropdown/dropdownCss-tests.js
new file mode 100644
index 0000000..9969335
--- /dev/null
+++ b/public/bower_components/select2/tests/dropdown/dropdownCss-tests.js
@@ -0,0 +1,104 @@
+module('Dropdown - dropdownCssClass compatibility');
+
+var $ = require('jquery');
+var Utils = require('select2/utils');
+var Options = require('select2/options');
+
+var Dropdown = require('select2/dropdown');
+var DropdownCSS = Utils.Decorate(
+ Dropdown,
+ require('select2/compat/dropdownCss')
+);
+
+test('all classes will be copied if :all: is used', function (assert) {
+ var $element = $('<select class="test copy works"></select>');
+ var options = new Options({
+ dropdownCssClass: ':all:'
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok($dropdown.hasClass('test'));
+ assert.ok($dropdown.hasClass('copy'));
+ assert.ok($dropdown.hasClass('works'));
+ assert.ok(!$dropdown.hasClass(':all:'));
+});
+
+test(':all: can be used with other classes', function (assert) {
+ var $element = $('<select class="test copy works"></select>');
+ var options = new Options({
+ dropdownCssClass: ':all: other'
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok($dropdown.hasClass('test'));
+ assert.ok($dropdown.hasClass('copy'));
+ assert.ok($dropdown.hasClass('works'));
+ assert.ok($dropdown.hasClass('other'));
+ assert.ok(!$dropdown.hasClass(':all:'));
+});
+
+test('classes can be passed in as a string', function (assert) {
+ var $element = $('<select class="test copy works"></select>');
+ var options = new Options({
+ dropdownCssClass: 'other'
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok($dropdown.hasClass('other'));
+});
+
+test('a function can be used based on the element', function (assert){
+ var $element = $('<select class="test"></select>');
+ var options = new Options({
+ dropdownCssClass: function ($element) {
+ return 'function';
+ }
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok($dropdown.hasClass('function'));
+ assert.ok(!$dropdown.hasClass('test'));
+});
+
+test(':all: works around custom adapters', function (assert) {
+ var $element = $('<select class="test"></select>');
+ var options = new Options({
+ dropdownCssClass: ':all: something',
+ adaptDropdownCssClass: function (clazz) {
+ return clazz + '-modified';
+ }
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok($dropdown.hasClass('something'));
+
+ assert.ok($dropdown.hasClass('test'));
+ assert.ok($dropdown.hasClass('test-modified'));
+});
+
+module('Dropdown - adaptDropdownCss compatibility');
+
+test('only return when adapted', function (assert) {
+ var $element = $('<select class="original"></select>');
+ var options = new Options({
+ adaptDropdownCssClass: function (clazz) {
+ return 'modified';
+ }
+ });
+
+ var select = new DropdownCSS($element, options);
+ var $dropdown = select.render();
+
+ assert.ok(!$dropdown.hasClass('original'));
+ assert.ok($dropdown.hasClass('modified'));
+});
diff --git a/public/bower_components/select2/tests/dropdown/positioning-tests.js b/public/bower_components/select2/tests/dropdown/positioning-tests.js
new file mode 100644
index 0000000..37c2b06
--- /dev/null
+++ b/public/bower_components/select2/tests/dropdown/positioning-tests.js
@@ -0,0 +1,177 @@
+module('Dropdown - attachBody - positioning');
+
+test('appends to the dropdown parent', function (assert) {
+ assert.expect(4);
+
+ var $ = require('jquery');
+
+ var $select = $('<select></select>');
+ var $parent = $('<div></div>');
+
+ var $container = $('<span></span>');
+ var container = new MockContainer();
+
+ $parent.appendTo($('#qunit-fixture'));
+ $select.appendTo($parent);
+
+ var Utils = require('select2/utils');
+ var Options = require('select2/options');
+
+ var Dropdown = require('select2/dropdown');
+ var AttachBody = require('select2/dropdown/attachBody');
+
+ var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
+
+ var dropdown = new DropdownAdapter($select, new Options({
+ dropdownParent: $parent
+ }));
+
+ assert.equal(
+ $parent.children().length,
+ 1,
+ 'Only the select should be in the container'
+ );
+
+ var $dropdown = dropdown.render();
+
+ dropdown.bind(container, $container);
+
+ dropdown.position($dropdown, $container);
+
+ assert.equal(
+ $parent.children().length,
+ 1,
+ 'The dropdown should not be placed until after it is opened'
+ );
+
+ dropdown._showDropdown();
+
+ assert.equal(
+ $parent.children().length,
+ 2,
+ 'The dropdown should now be in the container as well'
+ );
+
+ assert.ok(
+ $.contains($parent[0], $dropdown[0]),
+ 'The dropdown should be contained within the parent container'
+ );
+});
+
+test('dropdown is positioned down with static margins', function (assert) {
+ var $ = require('jquery');
+ var $select = $('<select></select>');
+ var $parent = $('<div></div>');
+ $parent.css({
+ position: 'static',
+ marginTop: '5px',
+ marginLeft: '10px'
+ });
+
+ var $container = $('<span>test</span>');
+ var container = new MockContainer();
+
+ $('#qunit-fixture').empty();
+
+ $parent.appendTo($('#qunit-fixture'));
+ $container.appendTo($parent);
+
+ var Utils = require('select2/utils');
+ var Options = require('select2/options');
+
+ var Dropdown = require('select2/dropdown');
+ var AttachBody = require('select2/dropdown/attachBody');
+
+ var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
+
+ var dropdown = new DropdownAdapter($select, new Options({
+ dropdownParent: $parent
+ }));
+
+ var $dropdown = dropdown.render();
+
+ assert.equal(
+ $dropdown[0].style.top,
+ 0,
+ 'The drodpown should not have any offset before it is displayed'
+ );
+
+ dropdown.bind(container, $container);
+ dropdown.position($dropdown, $container);
+ dropdown._showDropdown();
+
+ assert.ok(
+ dropdown.$dropdown.hasClass('select2-dropdown--below'),
+ 'The dropdown should be forced down'
+ );
+
+ assert.equal(
+ $dropdown.css('top').substring(0, 2),
+ $container.outerHeight() + 5,
+ 'The offset should be 5px at the top'
+ );
+
+ assert.equal(
+ $dropdown.css('left'),
+ '10px',
+ 'The offset should be 10px on the left'
+ );
+});
+
+test('dropdown is positioned down with absolute offsets', function (assert) {
+ var $ = require('jquery');
+ var $select = $('<select></select>');
+ var $parent = $('<div></div>');
+ $parent.css({
+ position: 'absolute',
+ top: '10px',
+ left: '5px'
+ });
+
+ var $container = $('<span>test</span>');
+ var container = new MockContainer();
+
+ $parent.appendTo($('#qunit-fixture'));
+ $container.appendTo($parent);
+
+ var Utils = require('select2/utils');
+ var Options = require('select2/options');
+
+ var Dropdown = require('select2/dropdown');
+ var AttachBody = require('select2/dropdown/attachBody');
+
+ var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
+
+ var dropdown = new DropdownAdapter($select, new Options({
+ dropdownParent: $parent
+ }));
+
+ var $dropdown = dropdown.render();
+
+ assert.equal(
+ $dropdown[0].style.top,
+ 0,
+ 'The drodpown should not have any offset before it is displayed'
+ );
+
+ dropdown.bind(container, $container);
+ dropdown.position($dropdown, $container);
+ dropdown._showDropdown();
+
+ assert.ok(
+ dropdown.$dropdown.hasClass('select2-dropdown--below'),
+ 'The dropdown should be forced down'
+ );
+
+ assert.equal(
+ $dropdown.css('top').substring(0, 2),
+ $container.outerHeight(),
+ 'There should not be an extra top offset'
+ );
+
+ assert.equal(
+ $dropdown.css('left'),
+ '0px',
+ 'There should not be an extra left offset'
+ );
+}); \ No newline at end of file
diff --git a/public/bower_components/select2/tests/dropdown/selectOnClose-tests.js b/public/bower_components/select2/tests/dropdown/selectOnClose-tests.js
new file mode 100644
index 0000000..3f1d1d4
--- /dev/null
+++ b/public/bower_components/select2/tests/dropdown/selectOnClose-tests.js
@@ -0,0 +1,137 @@
+module('Dropdown - selectOnClose');
+
+var $ = require('jquery');
+
+var Utils = require('select2/utils');
+var Options = require('select2/options');
+
+var SelectData = require('select2/data/select');
+
+var Results = require('select2/results');
+var SelectOnClose = require('select2/dropdown/selectOnClose');
+
+var ModifiedResults = Utils.Decorate(Results, SelectOnClose);
+
+var options = new Options({
+ selectOnClose: true
+});
+
+test('will not trigger if no results were given', function (assert) {
+ assert.expect(0);
+
+ var $element = $('<select></select>');
+ var select = new ModifiedResults($element, options, new SelectData($element));
+
+ var $dropdown = select.render();
+
+ var container = new MockContainer();
+ select.bind(container, $('<div></div>'));
+
+ select.on('select', function () {
+ assert.ok(false, 'The select event should not have been triggered');
+ });
+
+ container.trigger('close');
+});
+
+test('will not trigger if the results list is empty', function (assert) {
+ assert.expect(1);
+
+ var $element = $('<select></select>');
+ var select = new ModifiedResults($element, options, new SelectData($element));
+
+ var $dropdown = select.render();
+
+ var container = new MockContainer();
+ select.bind(container, $('<div></div>'));
+
+ select.on('select', function () {
+ assert.ok(false, 'The select event should not have been triggered');
+ });
+
+ select.append({
+ results: []
+ });
+
+ assert.equal(
+ $dropdown.find('li').length,
+ 0,
+ 'There should not be any results in the dropdown'
+ );
+
+ container.trigger('close');
+});
+
+test('will not trigger if no results here highlighted', function (assert) {
+ assert.expect(2);
+
+ var $element = $('<select></select>');
+ var select = new ModifiedResults($element, options, new SelectData($element));
+
+ var $dropdown = select.render();
+
+ var container = new MockContainer();
+ select.bind(container, $('<div></div>'));
+
+ select.on('select', function () {
+ assert.ok(false, 'The select event should not have been triggered');
+ });
+
+ select.append({
+ results: [
+ {
+ id: '1',
+ text: 'Test'
+ }
+ ]
+ });
+
+ assert.equal(
+ $dropdown.find('li').length,
+ 1,
+ 'There should be one result in the dropdown'
+ );
+
+ assert.equal(
+ $.trim($dropdown.find('li').text()),
+ 'Test',
+ 'The result should be the same as the one we appended'
+ );
+
+ container.trigger('close');
+});
+
+test('will trigger if there is a highlighted result', function (assert) {
+ assert.expect(2);
+
+ var $element = $('<select></select>');
+ var select = new ModifiedResults($element, options, new SelectData($element));
+
+ var $dropdown = select.render();
+
+ var container = new MockContainer();
+ select.bind(container, $('<div></div>'));
+
+ select.on('select', function () {
+ assert.ok(true, 'The select event should have been triggered');
+ });
+
+ select.append({
+ results: [
+ {
+ id: '1',
+ text: 'Test'
+ }
+ ]
+ });
+
+ assert.equal(
+ $dropdown.find('li').length,
+ 1,
+ 'There should be one result in the dropdown'
+ );
+
+ $dropdown.find('li').addClass('select2-results__option--highlighted');
+
+ container.trigger('close');
+});
diff --git a/public/bower_components/select2/tests/dropdown/stopPropagation-tests.js b/public/bower_components/select2/tests/dropdown/stopPropagation-tests.js
new file mode 100644
index 0000000..240a3e6
--- /dev/null
+++ b/public/bower_components/select2/tests/dropdown/stopPropagation-tests.js
@@ -0,0 +1,33 @@
+module('Dropdown - Stoping event propagation');
+
+var Dropdown = require('select2/dropdown');
+var StopPropagation = require('select2/dropdown/stopPropagation');
+
+var $ = require('jquery');
+var Options = require('select2/options');
+var Utils = require('select2/utils');
+
+var CustomDropdown = Utils.Decorate(Dropdown, StopPropagation);
+
+var options = new Options();
+
+test('click event does not propagate', function (assert) {
+ assert.expect(1);
+
+ var $container = $('#qunit-fixture .event-container');
+ var container = new MockContainer();
+
+ var dropdown = new CustomDropdown($('#qunit-fixture select'), options);
+
+ var $dropdown = dropdown.render();
+ dropdown.bind(container, $container);
+
+ $container.append($dropdown);
+ $container.on('click', function () {
+ assert.ok(false, 'The click event should have been stopped');
+ });
+
+ $dropdown.trigger('click');
+
+ assert.ok(true, 'Something went wrong if this failed');
+});