mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-30 05:01:10 +02:00
add static files
This commit is contained in:
557
static/vendor/select2/tests/data/select-tests.js
vendored
Normal file
557
static/vendor/select2/tests/data/select-tests.js
vendored
Normal file
@ -0,0 +1,557 @@
|
||||
module('Data adapters - Select - current');
|
||||
|
||||
var SelectData = require('select2/data/select');
|
||||
var $ = require('jquery');
|
||||
var Options = require('select2/options');
|
||||
var selectOptions = new Options({});
|
||||
|
||||
test('current gets default for single', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.current(function (data) {
|
||||
assert.equal(
|
||||
data.length,
|
||||
1,
|
||||
'There should only be one selected option'
|
||||
);
|
||||
|
||||
var option = data[0];
|
||||
|
||||
assert.equal(
|
||||
option.id,
|
||||
'One',
|
||||
'The value of the option tag should be the id'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
option.text,
|
||||
'One',
|
||||
'The text within the option tag should be the text'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('current gets default for multiple', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.current(function (data) {
|
||||
assert.equal(
|
||||
data.length,
|
||||
0,
|
||||
'Multiple selects have no default selection.'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('current gets options with explicit value', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var $option = $('<option value="1">One</option>');
|
||||
$select.append($option);
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
$select.val('1');
|
||||
|
||||
data.current(function (data) {
|
||||
assert.equal(
|
||||
data.length,
|
||||
1,
|
||||
'There should be one selected option'
|
||||
);
|
||||
|
||||
var option = data[0];
|
||||
|
||||
assert.equal(
|
||||
option.id,
|
||||
'1',
|
||||
'The option value should be the selected id'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
option.text,
|
||||
'One',
|
||||
'The text should match the text for the option tag'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('current gets options with implicit value', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
$select.val('One');
|
||||
|
||||
data.current(function (val) {
|
||||
assert.equal(
|
||||
val.length,
|
||||
1,
|
||||
'There should only be one selected value'
|
||||
);
|
||||
|
||||
var option = val[0];
|
||||
|
||||
assert.equal(
|
||||
option.id,
|
||||
'One',
|
||||
'The id should be the same as the option text'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
option.text,
|
||||
'One',
|
||||
'The text should be the same as the option text'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('select works for single', function (assert) {
|
||||
var $select = $('#qunit-fixture .single-with-placeholder');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
assert.equal($select.val(), 'placeholder');
|
||||
|
||||
data.select({
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
});
|
||||
|
||||
assert.equal($select.val(), 'One');
|
||||
});
|
||||
|
||||
test('multiple sets the value', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
assert.ok(
|
||||
$select.val() == null || $select.val().length == 0,
|
||||
'nothing should be selected'
|
||||
);
|
||||
|
||||
data.select({
|
||||
id: 'Two',
|
||||
text: 'Two'
|
||||
});
|
||||
|
||||
assert.deepEqual($select.val(), ['Two']);
|
||||
});
|
||||
|
||||
test('multiple adds to the old value', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
$select.val(['Two']);
|
||||
|
||||
assert.deepEqual($select.val(), ['Two']);
|
||||
|
||||
data.select({
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
});
|
||||
|
||||
assert.deepEqual($select.val(), ['One', 'Two']);
|
||||
});
|
||||
|
||||
test('duplicates - single - same id on select triggers change',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
|
||||
var data = new SelectData($select, data);
|
||||
var second = $('#qunit-fixture .duplicates option')[2];
|
||||
|
||||
var changeTriggered = false;
|
||||
|
||||
assert.equal($select.val(), 'one');
|
||||
|
||||
$select.on('change', function () {
|
||||
changeTriggered = true;
|
||||
});
|
||||
|
||||
data.select({
|
||||
id: 'one',
|
||||
text: 'Uno',
|
||||
element: second
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
$select.val(),
|
||||
'one',
|
||||
'The value never changed'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
changeTriggered,
|
||||
'The change event should be triggered'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
second.selected,
|
||||
'The second duplicate is selected, not the first'
|
||||
);
|
||||
});
|
||||
|
||||
test('duplicates - single - different id on select triggers change',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
|
||||
var data = new SelectData($select, data);
|
||||
var second = $('#qunit-fixture .duplicates option')[2];
|
||||
|
||||
var changeTriggered = false;
|
||||
|
||||
$select.val('two');
|
||||
|
||||
$select.on('change', function () {
|
||||
changeTriggered = true;
|
||||
});
|
||||
|
||||
data.select({
|
||||
id: 'one',
|
||||
text: 'Uno',
|
||||
element: second
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
$select.val(),
|
||||
'one',
|
||||
'The value changed to the duplicate id'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
changeTriggered,
|
||||
'The change event should be triggered'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
second.selected,
|
||||
'The second duplicate is selected, not the first'
|
||||
);
|
||||
});
|
||||
|
||||
test('duplicates - multiple - same id on select triggers change',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates-multi');
|
||||
|
||||
var data = new SelectData($select, data);
|
||||
var second = $('#qunit-fixture .duplicates-multi option')[2];
|
||||
|
||||
var changeTriggered = false;
|
||||
|
||||
$select.val(['one']);
|
||||
|
||||
$select.on('change', function () {
|
||||
changeTriggered = true;
|
||||
});
|
||||
|
||||
data.select({
|
||||
id: 'one',
|
||||
text: 'Uno',
|
||||
element: second
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
$select.val(),
|
||||
['one', 'one'],
|
||||
'The value now has duplicates'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
changeTriggered,
|
||||
'The change event should be triggered'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
second.selected,
|
||||
'The second duplicate is selected, not the first'
|
||||
);
|
||||
});
|
||||
|
||||
test('duplicates - multiple - different id on select triggers change',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates-multi');
|
||||
|
||||
var data = new SelectData($select, data);
|
||||
var second = $('#qunit-fixture .duplicates-multi option')[2];
|
||||
|
||||
var changeTriggered = false;
|
||||
|
||||
$select.val(['two']);
|
||||
|
||||
$select.on('change', function () {
|
||||
changeTriggered = true;
|
||||
});
|
||||
|
||||
data.select({
|
||||
id: 'one',
|
||||
text: 'Uno',
|
||||
element: second
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
$select.val(),
|
||||
['two', 'one'],
|
||||
'The value has the new id'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
changeTriggered,
|
||||
'The change event should be triggered'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
second.selected,
|
||||
'The second duplicate is selected, not the first'
|
||||
);
|
||||
});
|
||||
|
||||
module('Data adapter - Select - query');
|
||||
|
||||
test('all options are returned with no term', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
1,
|
||||
'The number of items returned should be equal to the number of options'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('the matcher checks the text', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({
|
||||
term: 'One'
|
||||
}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
1,
|
||||
'Only the "One" option should be found'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('the matcher ignores case', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({
|
||||
term: 'one'
|
||||
}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
1,
|
||||
'The "One" option should still be found'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('no options may be returned with no matches', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({
|
||||
term: 'qwerty'
|
||||
}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
0,
|
||||
'Only matching items should be returned'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('optgroup tags are marked with children', function (assert) {
|
||||
var $select = $('#qunit-fixture .groups');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({}, function (data) {
|
||||
assert.ok(
|
||||
'children' in data.results[0],
|
||||
'The optgroup element should have children when queried'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('empty optgroups are still shown when queried', function (assert) {
|
||||
var $select = $('#qunit-fixture .groups');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
2,
|
||||
'The empty optgroup element should still be returned when queried'
|
||||
);
|
||||
|
||||
var item = data.results[1];
|
||||
|
||||
assert.equal(
|
||||
item.text,
|
||||
'Empty',
|
||||
'The text of the empty optgroup should match the label'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
item.children.length,
|
||||
0,
|
||||
'There should be no children in the empty opgroup'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('multiple options with the same value are returned', function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
data.query({}, function (data) {
|
||||
assert.equal(
|
||||
data.results.length,
|
||||
3,
|
||||
'The duplicate option should still be returned when queried'
|
||||
);
|
||||
|
||||
var first = data.results[0];
|
||||
var duplicate = data.results[2];
|
||||
|
||||
assert.equal(
|
||||
first.id,
|
||||
duplicate.id,
|
||||
'The duplicates should have the same id'
|
||||
);
|
||||
|
||||
assert.notEqual(
|
||||
first.text,
|
||||
duplicate.text,
|
||||
'The duplicates do not have the same text'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('data objects use the text of the option', function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
var $option = $('<option>&</option>');
|
||||
|
||||
var item = data.item($option);
|
||||
|
||||
assert.equal(item.id, '&');
|
||||
assert.equal(item.text, '&');
|
||||
});
|
||||
|
||||
test('select option construction accepts id=0 (zero) value', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var selectOptions = [{ id: 0, text: 'Zero Value'}];
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
var optionElem = data.option(selectOptions[0]);
|
||||
|
||||
// If was "Zero Value"", then it ignored id property
|
||||
assert.equal(
|
||||
optionElem[0].value,
|
||||
'0',
|
||||
'Built option value should be "0" (zero as a string).'
|
||||
);
|
||||
});
|
||||
|
||||
test('select option construction accepts id="" (empty string) value',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var selectOptions = [{ id: '', text: 'Empty String'}];
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
var optionElem = data.option(selectOptions[0]);
|
||||
|
||||
assert.equal(
|
||||
optionElem[0].value,
|
||||
'',
|
||||
'Built option value should be an empty string.'
|
||||
);
|
||||
});
|
||||
|
||||
test('user-defined types are normalized properly', function (assert) {
|
||||
var $select = $('#qunit-fixture .user-defined'),
|
||||
|
||||
UserDefinedType = function (id, text) {
|
||||
var self = this;
|
||||
|
||||
self.id = id;
|
||||
self.text = text;
|
||||
|
||||
return self;
|
||||
};
|
||||
|
||||
var testData = [
|
||||
'Test',
|
||||
{
|
||||
id: 4,
|
||||
text: 'item'
|
||||
},
|
||||
new UserDefinedType(1, 'aaaaaa')
|
||||
];
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
var normalizedItem = data._normalizeItem(testData[0]);
|
||||
var normalizedItem2 = data._normalizeItem(testData[1]);
|
||||
var normalizedItem3 = data._normalizeItem(testData[2]);
|
||||
|
||||
assert.equal(
|
||||
testData[0],
|
||||
normalizedItem.id,
|
||||
'id property should be equal to text after normalize'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
testData[0],
|
||||
normalizedItem.text,
|
||||
'text property should be equal after normalize'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
testData[1].id,
|
||||
normalizedItem2.id,
|
||||
'id property should be equal after normalize'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
testData[1].text,
|
||||
normalizedItem2.text,
|
||||
'text property should be equal after normalize'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
testData[2].id,
|
||||
normalizedItem3.id,
|
||||
'id property should be equal after normalize'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
testData[2].text,
|
||||
normalizedItem3.text,
|
||||
'text property should be equal after normalize'
|
||||
);
|
||||
|
||||
});
|
Reference in New Issue
Block a user