1
0
mirror of synced 2024-11-23 05:26:10 +03:00
select2/tests/data/array-tests.js
Kevin Brown e018a6f69e Changed tests to not use deepEqual
We should only be checking the option values that matter, such as
`id` and `text`, instead of checking all of the option values. This
will prevent unexpected breaking when new properties are added to
the options.

Existing properties should be covered by tests to avoid regressions.
2014-10-21 21:44:00 -04:00

150 lines
2.8 KiB
JavaScript

module('Data adapters - Array');
var ArrayData = require('select2/data/array');
var $ = require('jquery');
var Options = require('select2/options');
var options = new Options({
data: [
{
id: 'default',
text: 'Default'
},
{
id: '1',
text: 'One'
},
{
id: '2',
text: '2'
}
]
});
test('current gets default for single', function (assert) {
var $select = $('#qunit-fixture .single');
var data = new ArrayData($select, options);
data.current(function (val) {
assert.equal(
val.length,
0,
'There should be no default selection.'
);
});
});
test('current gets default for multiple', function (assert) {
var $select = $('#qunit-fixture .multiple');
var data = new ArrayData($select, options);
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, options);
$select.val(['3']);
data.current(function (val) {
assert.equal(
val.length,
1,
'There should only be one existing selection'
);
var option = val[0];
assert.equal(
option.id,
'3',
'The id should be equal to the value of the option tag'
);
assert.equal(
option.text,
'Three',
'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');
var data = new ArrayData($select, options);
data.select({
id: '2',
text: '2'
});
data.current(function (val) {
assert.deepEqual(
val,
[{
id: '2',
text: '2'
}],
'The text and id should match the selected array data.'
);
});
});
test('select works for single', function (assert) {
var $select = $('#qunit-fixture .single');
var data = new ArrayData($select, options);
assert.equal($select.val(), null);
data.select({
id: '1',
text: 'One'
});
assert.equal($select.val(), '1');
});
test('multiple sets the value', function (assert) {
var $select = $('#qunit-fixture .multiple');
var data = new ArrayData($select, options);
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, options);
$select.val(['3']);
assert.deepEqual($select.val(), ['3']);
data.select({
id: 'default',
text: 'Default'
});
assert.deepEqual($select.val(), ['3', 'default']);
});