aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/select2/tests/data/array-tests.js
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/data/array-tests.js
parentdfd839f27146df0ad0494e11734fc7d310c70ebf (diff)
Fixed many permissions and began admin interface
Diffstat (limited to 'public/bower_components/select2/tests/data/array-tests.js')
-rw-r--r--public/bower_components/select2/tests/data/array-tests.js318
1 files changed, 318 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/data/array-tests.js b/public/bower_components/select2/tests/data/array-tests.js
new file mode 100644
index 0000000..65a6e32
--- /dev/null
+++ b/public/bower_components/select2/tests/data/array-tests.js
@@ -0,0 +1,318 @@
+module('Data adapters - Array');
+
+var ArrayData = require('select2/data/array');
+var $ = require('jquery');
+var Options = require('select2/options');
+
+var arrayOptions = new Options({
+ data: [
+ {
+ id: 'default',
+ text: 'Default'
+ },
+ {
+ id: '1',
+ text: 'One'
+ },
+ {
+ id: '2',
+ text: '2'
+ }
+ ]
+});
+
+var extraOptions = new Options ({
+ data: [
+ {
+ id: 'default',
+ text: 'Default',
+ extra: true
+ },
+ {
+ id: 'One',
+ text: 'One',
+ extra: true
+ }
+ ]
+});
+
+var nestedOptions = new Options({
+ data: [
+ {
+ text: 'Default',
+ children: [
+ {
+ text: 'Next',
+ children: [
+ {
+ id: 'a',
+ text: 'Option'
+ }
+ ]
+ }
+ ]
+ }
+ ]
+});
+
+test('current gets default for single', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ data.current(function (val) {
+ assert.equal(
+ val.length,
+ 1,
+ 'There should always be a selected item for array data.'
+ );
+
+ var item = val[0];
+
+ assert.equal(
+ item.id,
+ 'default',
+ 'The first item should be selected'
+ );
+ });
+});
+
+test('current gets default for multiple', function (assert) {
+ var $select = $('#qunit-fixture .multiple');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ data.current(function (val) {
+ assert.equal(
+ val.length,
+ 0,
+ 'There should be no default selection.'
+ );
+ });
+});
+
+test('current works with existing selections', function (assert) {
+ var $select = $('#qunit-fixture .multiple');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ $select.val(['One']);
+
+ data.current(function (val) {
+ assert.equal(
+ val.length,
+ 1,
+ 'There should only be one existing selection.'
+ );
+
+ var option = val[0];
+
+ assert.equal(
+ option.id,
+ 'One',
+ 'The id should be equal to the value of the option tag.'
+ );
+
+ assert.equal(
+ option.text,
+ 'One',
+ 'The text should be equal to the text of the option tag.'
+ );
+ });
+});
+
+test('current works with selected data', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ data.select({
+ id: '2',
+ text: '2'
+ });
+
+ data.current(function (val) {
+ assert.equal(
+ val.length,
+ 1,
+ 'There should only be one option selected.'
+ );
+
+ var option = val[0];
+
+ assert.equal(
+ option.id,
+ '2',
+ 'The id should match the original id from the array.'
+ );
+
+ assert.equal(
+ option.text,
+ '2',
+ 'The text should match the original text from the array.'
+ );
+ });
+});
+
+test('select works for single', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ assert.equal(
+ $select.val(),
+ 'default',
+ 'There should already be a selection'
+ );
+
+ data.select({
+ id: '1',
+ text: 'One'
+ });
+
+ assert.equal(
+ $select.val(),
+ '1',
+ 'The selected value should be the same as the selected id'
+ );
+});
+
+test('multiple sets the value', function (assert) {
+ var $select = $('#qunit-fixture .multiple');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ assert.equal($select.val(), null);
+
+ data.select({
+ id: 'default',
+ text: 'Default'
+ });
+
+ assert.deepEqual($select.val(), ['default']);
+});
+
+test('multiple adds to the old value', function (assert) {
+ var $select = $('#qunit-fixture .multiple');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ $select.val(['One']);
+
+ assert.deepEqual($select.val(), ['One']);
+
+ data.select({
+ id: 'default',
+ text: 'Default'
+ });
+
+ assert.deepEqual($select.val(), ['One', 'default']);
+});
+
+test('option tags are automatically generated', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, arrayOptions);
+
+ assert.equal(
+ $select.find('option').length,
+ 3,
+ 'An <option> element should be created for each object'
+ );
+});
+
+test('option tags can receive new data', function(assert) {
+ var $select = $('#qunit-fixture .single');
+
+ var data = new ArrayData($select, extraOptions);
+
+ assert.equal(
+ $select.find('option').length,
+ 2,
+ 'Only one more <option> element should be created'
+ );
+
+ data.select({
+ id: 'default'
+ });
+
+ assert.ok(
+ $select.find(':selected').data('data').extra,
+ '<option> default should have new data'
+ );
+
+ data.select({
+ id: 'One'
+ });
+
+ assert.ok(
+ $select.find(':selected').data('data').extra,
+ '<option> One should have new data'
+ );
+});
+
+test('optgroup tags can also be generated', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, nestedOptions);
+
+ assert.equal(
+ $select.find('option').length,
+ 1,
+ 'An <option> element should be created for the one selectable object'
+ );
+
+ assert.equal(
+ $select.find('optgroup').length,
+ 2,
+ 'An <optgroup> element should be created for the two with children'
+ );
+});
+
+test('optgroup tags have the right properties', function (assert) {
+ var $select = $('#qunit-fixture .single-empty');
+
+ var data = new ArrayData($select, nestedOptions);
+
+ var $group = $select.children('optgroup');
+
+ assert.equal(
+ $group.prop('label'),
+ 'Default',
+ 'An `<optgroup>` label should match the text property'
+ );
+
+ assert.equal(
+ $group.children().length,
+ 1,
+ 'The <optgroup> should have one child under it'
+ );
+});
+
+test('existing selections are respected on initialization', function (assert) {
+ var $select = $(
+ '<select>' +
+ '<option>First</option>' +
+ '<option selected>Second</option>' +
+ '</select>'
+ );
+
+ var options = new Options({
+ data: [
+ {
+ id: 'Second',
+ text: 'Second'
+ },
+ {
+ id: 'Third',
+ text: 'Third'
+ }
+ ]
+ });
+
+ assert.equal($select.val(), 'Second');
+
+ var data = new ArrayData($select, options);
+
+ assert.equal($select.val(), 'Second');
+}); \ No newline at end of file