Fixed jshint errors as a result of prepending QUnit
This commit is contained in:
parent
0241a48a8c
commit
f9f43c854c
@ -259,23 +259,26 @@ QUnit.test('option tags are automatically generated', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('automatically generated option tags have a result id', function (assert) {
|
||||
var $select = $('#qunit-fixture .single-empty');
|
||||
QUnit.test(
|
||||
'automatically generated option tags have a result id',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single-empty');
|
||||
|
||||
var data = new ArrayData($select, arrayOptions);
|
||||
var data = new ArrayData($select, arrayOptions);
|
||||
|
||||
var container = new MockContainer();
|
||||
data.bind(container, $('<div></div>'));
|
||||
var container = new MockContainer();
|
||||
data.bind(container, $('<div></div>'));
|
||||
|
||||
data.select({
|
||||
id: 'default'
|
||||
});
|
||||
data.select({
|
||||
id: 'default'
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
Utils.GetData($select.find(':selected')[0], 'data')._resultId,
|
||||
'<option> default should have a result ID assigned'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
Utils.GetData($select.find(':selected')[0], 'data')._resultId,
|
||||
'<option> default should have a result ID assigned'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('option tags can receive new data', function(assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
@ -354,9 +357,11 @@ QUnit.test('optgroup tags have the right properties', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('existing selections are respected on initialization', function (assert) {
|
||||
var $select = $(
|
||||
'<select>' +
|
||||
QUnit.test(
|
||||
'existing selections are respected on initialization',
|
||||
function (assert) {
|
||||
var $select = $(
|
||||
'<select>' +
|
||||
'<option>First</option>' +
|
||||
'<option selected>Second</option>' +
|
||||
'</select>'
|
||||
@ -383,4 +388,5 @@ QUnit.test('existing selections are respected on initialization', function (asse
|
||||
data.bind(container, $('<div></div>'));
|
||||
|
||||
assert.equal($select.val(), 'Second');
|
||||
});
|
||||
}
|
||||
);
|
@ -37,33 +37,36 @@ QUnit.test('test that options can be selected', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('unselect the single selected option clears the value', function (assert) {
|
||||
var options = new Options({
|
||||
data: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test',
|
||||
selected: true
|
||||
}
|
||||
]
|
||||
});
|
||||
var $element = $('<input />');
|
||||
QUnit.test(
|
||||
'unselect the single selected option clears the value',
|
||||
function (assert) {
|
||||
var options = new Options({
|
||||
data: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test',
|
||||
selected: true
|
||||
}
|
||||
]
|
||||
});
|
||||
var $element = $('<input />');
|
||||
|
||||
var adapter = new InputAdapter($element, options);
|
||||
var adapter = new InputAdapter($element, options);
|
||||
|
||||
var container = new MockContainer();
|
||||
adapter.bind(container, $('<div></div>'));
|
||||
var container = new MockContainer();
|
||||
adapter.bind(container, $('<div></div>'));
|
||||
|
||||
adapter.unselect({
|
||||
id: 'test'
|
||||
});
|
||||
adapter.unselect({
|
||||
id: 'test'
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'',
|
||||
'The id should no longer be in the value'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'',
|
||||
'The id should no longer be in the value'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('options can be unselected individually', function (assert) {
|
||||
var options = new Options({
|
||||
|
@ -417,34 +417,37 @@ QUnit.test('empty optgroups are still shown when queried', function (assert) {
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test('multiple options with the same value are returned', function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
QUnit.test(
|
||||
'multiple options with the same value are returned',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
|
||||
var data = new SelectData($select, selectOptions);
|
||||
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'
|
||||
);
|
||||
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];
|
||||
var first = data.results[0];
|
||||
var duplicate = data.results[2];
|
||||
|
||||
assert.equal(
|
||||
first.id,
|
||||
duplicate.id,
|
||||
'The duplicates should have the same id'
|
||||
);
|
||||
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'
|
||||
);
|
||||
});
|
||||
});
|
||||
assert.notEqual(
|
||||
first.text,
|
||||
duplicate.text,
|
||||
'The duplicates do not have the same text'
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('data objects use the text of the option', function (assert) {
|
||||
var $select = $('#qunit-fixture .duplicates');
|
||||
@ -459,21 +462,24 @@ QUnit.test('data objects use the text of the option', function (assert) {
|
||||
assert.equal(item.text, '&');
|
||||
});
|
||||
|
||||
QUnit.test('select option construction accepts id=0 (zero) value', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
QUnit.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 selectOptions = [{ id: 0, text: 'Zero Value'}];
|
||||
var data = new SelectData($select, selectOptions);
|
||||
|
||||
var optionElem = data.option(selectOptions[0]);
|
||||
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).'
|
||||
);
|
||||
});
|
||||
// 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).'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('select option construction accepts id="" (empty string) value',
|
||||
function (assert) {
|
||||
|
@ -64,20 +64,23 @@ QUnit.test('white space is trimmed by default', function (assert) {
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test('does not create option if text is same but lowercase', function (assert) {
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
QUnit.test(
|
||||
'does not create option if text is same but lowercase',
|
||||
function (assert) {
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
|
||||
data.query({
|
||||
term: 'one'
|
||||
}, function (data) {
|
||||
assert.equal(data.results.length, 1);
|
||||
data.query({
|
||||
term: 'one'
|
||||
}, function (data) {
|
||||
assert.equal(data.results.length, 1);
|
||||
|
||||
var item = data.results[0];
|
||||
var item = data.results[0];
|
||||
|
||||
assert.equal(item.id, 'One');
|
||||
assert.equal(item.text, 'One');
|
||||
});
|
||||
});
|
||||
assert.equal(item.id, 'One');
|
||||
assert.equal(item.text, 'One');
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('does not trigger for additional pages', function (assert) {
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
@ -191,25 +194,28 @@ QUnit.test('insertTag controls the tag location', function (assert) {
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test('insertTag can be controlled through the options', function (assert) {
|
||||
var options = new Options({
|
||||
insertTag: function (data, tag) {
|
||||
data.push(tag);
|
||||
}
|
||||
});
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
QUnit.test(
|
||||
'insertTag can be controlled through the options',
|
||||
function (assert) {
|
||||
var options = new Options({
|
||||
insertTag: function (data, tag) {
|
||||
data.push(tag);
|
||||
}
|
||||
});
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
|
||||
data.query({
|
||||
term: 'o'
|
||||
}, function (data) {
|
||||
assert.equal(data.results.length, 2);
|
||||
data.query({
|
||||
term: 'o'
|
||||
}, function (data) {
|
||||
assert.equal(data.results.length, 2);
|
||||
|
||||
var item = data.results[1];
|
||||
var item = data.results[1];
|
||||
|
||||
assert.equal(item.id, 'o');
|
||||
assert.equal(item.text, 'o');
|
||||
});
|
||||
});
|
||||
assert.equal(item.id, 'o');
|
||||
assert.equal(item.text, 'o');
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('createTag controls the tag object', function (assert) {
|
||||
var data = new SelectTags($('#qunit-fixture .single'), options);
|
||||
|
@ -58,120 +58,126 @@ QUnit.test('appends to the dropdown parent', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.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'
|
||||
});
|
||||
QUnit.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();
|
||||
var $container = $('<span>test</span>');
|
||||
var container = new MockContainer();
|
||||
|
||||
$('#qunit-fixture').empty();
|
||||
$('#qunit-fixture').empty();
|
||||
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$container.appendTo($parent);
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$container.appendTo($parent);
|
||||
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
|
||||
var Dropdown = require('select2/dropdown');
|
||||
var AttachBody = require('select2/dropdown/attachBody');
|
||||
var Dropdown = require('select2/dropdown');
|
||||
var AttachBody = require('select2/dropdown/attachBody');
|
||||
|
||||
var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
|
||||
var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
|
||||
|
||||
var dropdown = new DropdownAdapter($select, new Options({
|
||||
dropdownParent: $parent
|
||||
}));
|
||||
var dropdown = new DropdownAdapter($select, new Options({
|
||||
dropdownParent: $parent
|
||||
}));
|
||||
|
||||
var $dropdown = dropdown.render();
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
assert.equal(
|
||||
$dropdown[0].style.top,
|
||||
0,
|
||||
'The drodpown should not have any offset before it is displayed'
|
||||
);
|
||||
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();
|
||||
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.ok(
|
||||
dropdown.$dropdown.hasClass('select2-dropdown--below'),
|
||||
'The dropdown should be forced down'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
$dropdown.css('top').replace(/\D+/, ''),
|
||||
$container.outerHeight() + 5,
|
||||
'The offset should be 5px at the top'
|
||||
);
|
||||
assert.equal(
|
||||
$dropdown.css('top').replace(/\D+/, ''),
|
||||
$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'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$dropdown.css('left'),
|
||||
'10px',
|
||||
'The offset should be 10px on the left'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.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'
|
||||
});
|
||||
QUnit.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();
|
||||
var $container = $('<span>test</span>');
|
||||
var container = new MockContainer();
|
||||
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$container.appendTo($parent);
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$container.appendTo($parent);
|
||||
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
|
||||
var Dropdown = require('select2/dropdown');
|
||||
var AttachBody = require('select2/dropdown/attachBody');
|
||||
var Dropdown = require('select2/dropdown');
|
||||
var AttachBody = require('select2/dropdown/attachBody');
|
||||
|
||||
var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
|
||||
var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
|
||||
|
||||
var dropdown = new DropdownAdapter($select, new Options({
|
||||
dropdownParent: $parent
|
||||
}));
|
||||
var dropdown = new DropdownAdapter($select, new Options({
|
||||
dropdownParent: $parent
|
||||
}));
|
||||
|
||||
var $dropdown = dropdown.render();
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
assert.equal(
|
||||
$dropdown[0].style.top,
|
||||
0,
|
||||
'The drodpown should not have any offset before it is displayed'
|
||||
);
|
||||
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();
|
||||
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.ok(
|
||||
dropdown.$dropdown.hasClass('select2-dropdown--below'),
|
||||
'The dropdown should be forced down'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
$dropdown.css('top').replace(/\D+/, ''),
|
||||
$container.outerHeight(),
|
||||
'There should not be an extra top offset'
|
||||
);
|
||||
assert.equal(
|
||||
$dropdown.css('top').replace(/\D+/, ''),
|
||||
$container.outerHeight(),
|
||||
'There should not be an extra top offset'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
$dropdown.css('left'),
|
||||
'0px',
|
||||
'There should not be an extra left offset'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$dropdown.css('left'),
|
||||
'0px',
|
||||
'There should not be an extra left offset'
|
||||
);
|
||||
}
|
||||
);
|
@ -45,88 +45,100 @@ QUnit.test('aria-autocomplete attribute is present', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('aria-activedescendant should not be set initiailly', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should not be set initiailly',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
|
||||
var $search = $dropdown.find('input');
|
||||
var $search = $dropdown.find('input');
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'The search box should not point to anything when it is first rendered'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'The search box should not point to anything when it is first rendered'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-activedescendant should be set after highlight', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should be set after highlight',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
|
||||
container.trigger('results:focus', {
|
||||
data: {
|
||||
_resultId: 'test'
|
||||
}
|
||||
});
|
||||
container.trigger('results:focus', {
|
||||
data: {
|
||||
_resultId: 'test'
|
||||
}
|
||||
});
|
||||
|
||||
var $search = $dropdown.find('input');
|
||||
var $search = $dropdown.find('input');
|
||||
|
||||
assert.equal(
|
||||
$search.attr('aria-activedescendant'),
|
||||
'test',
|
||||
'The search is pointing to the focused result'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$search.attr('aria-activedescendant'),
|
||||
'test',
|
||||
'The search is pointing to the focused result'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('activedescendant should remove if there is no ID', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
QUnit.test(
|
||||
'activedescendant should remove if there is no ID',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
|
||||
var $search = $dropdown.find('input');
|
||||
$search.attr('aria-activedescendant', 'test');
|
||||
var $search = $dropdown.find('input');
|
||||
$search.attr('aria-activedescendant', 'test');
|
||||
|
||||
container.trigger('results:focus', {
|
||||
data: {}
|
||||
});
|
||||
container.trigger('results:focus', {
|
||||
data: {}
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no result for the search to be pointing to'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no result for the search to be pointing to'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-activedescendant should be removed when closed', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should be removed when closed',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
var dropdown = new DropdownSearch($select, options);
|
||||
var $dropdown = dropdown.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
dropdown.bind(container, $('<span></span>'));
|
||||
|
||||
var $search = $dropdown.find('input');
|
||||
$search.attr('aria-activedescendant', 'something');
|
||||
var $search = $dropdown.find('input');
|
||||
$search.attr('aria-activedescendant', 'something');
|
||||
|
||||
container.trigger('close');
|
||||
container.trigger('close');
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no active descendant when the dropdown is closed'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no active descendant when the dropdown is closed'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-controls should not be set initiailly', function (assert) {
|
||||
var $select = $('#qunit-fixture .single');
|
||||
|
@ -62,44 +62,49 @@ QUnit.test('will not trigger if the results list is empty', function (assert) {
|
||||
container.trigger('close');
|
||||
});
|
||||
|
||||
QUnit.test('will not trigger if no results here highlighted', function (assert) {
|
||||
assert.expect(2);
|
||||
QUnit.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 $element = $('<select></select>');
|
||||
var select = new ModifiedResults(
|
||||
$element, options, new SelectData($element)
|
||||
);
|
||||
|
||||
var $dropdown = select.render();
|
||||
var $dropdown = select.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
select.bind(container, $('<div></div>'));
|
||||
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.on('select', function () {
|
||||
assert.ok(false, 'The select event should not have been triggered');
|
||||
});
|
||||
|
||||
select.append({
|
||||
results: [
|
||||
{
|
||||
id: '1',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
});
|
||||
select.append({
|
||||
results: [
|
||||
{
|
||||
id: '1',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
$dropdown.find('li').length,
|
||||
1,
|
||||
'There should be one result in the dropdown'
|
||||
);
|
||||
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'
|
||||
);
|
||||
assert.equal(
|
||||
$.trim($dropdown.find('li').text()),
|
||||
'Test',
|
||||
'The result should be the same as the one we appended'
|
||||
);
|
||||
|
||||
container.trigger('close');
|
||||
});
|
||||
container.trigger('close');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('will trigger if there is a highlighted result', function (assert) {
|
||||
assert.expect(2);
|
||||
|
@ -1,50 +1,56 @@
|
||||
QUnit.module('Defaults - Ajax');
|
||||
|
||||
QUnit.test('options are merged recursively with default options', function (assert) {
|
||||
var defaults = require('select2/defaults');
|
||||
QUnit.test(
|
||||
'options are merged recursively with default options',
|
||||
function (assert) {
|
||||
var defaults = require('select2/defaults');
|
||||
|
||||
var ajaxDelay = 250;
|
||||
var ajaxUrl = 'http://www.test.com';
|
||||
var ajaxDelay = 250;
|
||||
var ajaxUrl = 'http://www.test.com';
|
||||
|
||||
var mergedOptions;
|
||||
var mergedOptions;
|
||||
|
||||
defaults.set('ajax--delay', ajaxDelay);
|
||||
defaults.set('ajax--delay', ajaxDelay);
|
||||
|
||||
mergedOptions = defaults.apply({
|
||||
ajax: {
|
||||
url: ajaxUrl
|
||||
}
|
||||
});
|
||||
mergedOptions = defaults.apply({
|
||||
ajax: {
|
||||
url: ajaxUrl
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
mergedOptions.ajax.delay,
|
||||
ajaxDelay,
|
||||
'Ajax default options are present on the merged options'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
mergedOptions.ajax.url,
|
||||
ajaxUrl,
|
||||
'Ajax provided options are present on the merged options'
|
||||
);
|
||||
|
||||
defaults.reset();
|
||||
});
|
||||
|
||||
QUnit.test('more than one default option can be changed via set()', function(assert) {
|
||||
var defaults = require('select2/defaults');
|
||||
var ajaxDelay = 123;
|
||||
var dataDataType = 'xml';
|
||||
defaults.set('ajax--delay', ajaxDelay);
|
||||
defaults.set('ajax--data-type', dataDataType);
|
||||
|
||||
assert.equal(
|
||||
defaults.defaults.ajax.delay,
|
||||
assert.equal(
|
||||
mergedOptions.ajax.delay,
|
||||
ajaxDelay,
|
||||
'Ajax default options are present on the merged options'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
mergedOptions.ajax.url,
|
||||
ajaxUrl,
|
||||
'Ajax provided options are present on the merged options'
|
||||
);
|
||||
|
||||
defaults.reset();
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test(
|
||||
'more than one default option can be changed via set()',
|
||||
function(assert) {
|
||||
var defaults = require('select2/defaults');
|
||||
var ajaxDelay = 123;
|
||||
var dataDataType = 'xml';
|
||||
defaults.set('ajax--delay', ajaxDelay);
|
||||
defaults.set('ajax--data-type', dataDataType);
|
||||
|
||||
assert.equal(
|
||||
defaults.defaults.ajax.delay,
|
||||
ajaxDelay,
|
||||
'Both ajax.delay and ajax.dataType present in defaults');
|
||||
assert.equal(
|
||||
defaults.defaults.ajax.dataType,
|
||||
dataDataType,
|
||||
'Both ajax.delay and ajax.dataType present in defaults');
|
||||
assert.equal(
|
||||
defaults.defaults.ajax.dataType,
|
||||
dataDataType,
|
||||
'Both ajax.delay and ajax.dataType present in defaults');
|
||||
defaults.reset();
|
||||
});
|
||||
defaults.reset();
|
||||
}
|
||||
);
|
||||
|
@ -234,17 +234,20 @@ QUnit.test('converted ajax-url to ajax--url automatically', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('converted select2-tags to data/tags automatically', function (assert) {
|
||||
var $test = $('<select data-select2-tags="original data"></select>');
|
||||
var options = new Options({}, $test);
|
||||
QUnit.test(
|
||||
'converted select2-tags to data/tags automatically',
|
||||
function (assert) {
|
||||
var $test = $('<select data-select2-tags="original data"></select>');
|
||||
var options = new Options({}, $test);
|
||||
|
||||
assert.ok(
|
||||
options.get('tags'),
|
||||
'The `tags` key is automatically set to true'
|
||||
);
|
||||
assert.equal(
|
||||
options.get('data'),
|
||||
'original data',
|
||||
'The `data` key is created with the original data'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
options.get('tags'),
|
||||
'The `tags` key is automatically set to true'
|
||||
);
|
||||
assert.equal(
|
||||
options.get('data'),
|
||||
'original data',
|
||||
'The `data` key is created with the original data'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
@ -4,7 +4,7 @@ var $ = require('jquery');
|
||||
var Options = require('select2/options');
|
||||
var Defaults = require('select2/defaults');
|
||||
|
||||
module('Options - Translations', {
|
||||
QUnit.module('Options - Translations', {
|
||||
beforeEach: function () {
|
||||
Defaults.reset();
|
||||
},
|
||||
@ -13,20 +13,23 @@ module('Options - Translations', {
|
||||
}
|
||||
});
|
||||
|
||||
test('partial dictonaries are reset when default reset', function (assert) {
|
||||
Defaults.set('language', {
|
||||
test: 'testing'
|
||||
});
|
||||
QUnit.test(
|
||||
'partial dictonaries are reset when default reset',
|
||||
function (assert) {
|
||||
Defaults.set('language', {
|
||||
test: 'testing'
|
||||
});
|
||||
|
||||
Defaults.reset();
|
||||
Defaults.reset();
|
||||
|
||||
assert.ok(
|
||||
!Defaults.defaults.language.test,
|
||||
'The partial dictionary should have been reset'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!Defaults.defaults.language.test,
|
||||
'The partial dictionary should have been reset'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
test('default language chain is English', function (assert) {
|
||||
QUnit.test('default language chain is English', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var options = new Options({}, $element);
|
||||
@ -37,7 +40,7 @@ test('default language chain is English', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
QUnit.test(
|
||||
'default translation includes all of the required messages',
|
||||
function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
@ -86,84 +89,90 @@ QUnit.test('partial dictionaries can be passed', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('partial dictionaries can be combined with defaults', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
QUnit.test(
|
||||
'partial dictionaries can be combined with defaults',
|
||||
function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
Defaults.set('language', {
|
||||
test: function () {
|
||||
return 'Testing';
|
||||
}
|
||||
});
|
||||
|
||||
var options = new Options({
|
||||
language: {
|
||||
searching: function () {
|
||||
return 'Something';
|
||||
Defaults.set('language', {
|
||||
test: function () {
|
||||
return 'Testing';
|
||||
}
|
||||
}
|
||||
}, $element);
|
||||
});
|
||||
|
||||
var translations = options.get('translations');
|
||||
|
||||
assert.equal(
|
||||
translations.get('searching')(),
|
||||
'Something',
|
||||
'The partial dictionary still overrides translations'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('test')(),
|
||||
'Testing',
|
||||
'The defaults were included in the fallback chain'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('noResults')(),
|
||||
'No results found',
|
||||
'You can still get English translations for keys not passed in'
|
||||
);
|
||||
});
|
||||
|
||||
test('partial dictionaries can used in fallback chains', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var options = new Options({
|
||||
language: [
|
||||
{
|
||||
var options = new Options({
|
||||
language: {
|
||||
searching: function () {
|
||||
return 'Something';
|
||||
}
|
||||
},
|
||||
{
|
||||
test: function () {
|
||||
return 'Testing';
|
||||
}
|
||||
}
|
||||
]
|
||||
}, $element);
|
||||
}, $element);
|
||||
|
||||
var translations = options.get('translations');
|
||||
var translations = options.get('translations');
|
||||
|
||||
assert.equal(
|
||||
translations.get('searching')(),
|
||||
'Something',
|
||||
'The partial dictionary still overrides translations'
|
||||
);
|
||||
assert.equal(
|
||||
translations.get('searching')(),
|
||||
'Something',
|
||||
'The partial dictionary still overrides translations'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('test')(),
|
||||
'Testing',
|
||||
'The defaults were included in the fallback chain'
|
||||
);
|
||||
assert.equal(
|
||||
translations.get('test')(),
|
||||
'Testing',
|
||||
'The defaults were included in the fallback chain'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('noResults')(),
|
||||
'No results found',
|
||||
'You can still get English translations for keys not passed in'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
translations.get('noResults')(),
|
||||
'No results found',
|
||||
'You can still get English translations for keys not passed in'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
test('language can be set via the options', function (assert) {
|
||||
QUnit.test(
|
||||
'partial dictionaries can used in fallback chains',
|
||||
function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var options = new Options({
|
||||
language: [
|
||||
{
|
||||
searching: function () {
|
||||
return 'Something';
|
||||
}
|
||||
},
|
||||
{
|
||||
test: function () {
|
||||
return 'Testing';
|
||||
}
|
||||
}
|
||||
]
|
||||
}, $element);
|
||||
|
||||
var translations = options.get('translations');
|
||||
|
||||
assert.equal(
|
||||
translations.get('searching')(),
|
||||
'Something',
|
||||
'The partial dictionary still overrides translations'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('test')(),
|
||||
'Testing',
|
||||
'The defaults were included in the fallback chain'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
translations.get('noResults')(),
|
||||
'No results found',
|
||||
'You can still get English translations for keys not passed in'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('language can be set via the options', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var options = new Options({
|
||||
@ -176,7 +185,7 @@ test('language can be set via the options', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('multi-part language is broken out', function (assert) {
|
||||
QUnit.test('multi-part language is broken out', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var options = new Options({
|
||||
@ -189,7 +198,7 @@ test('multi-part language is broken out', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('default language can be set', function (assert) {
|
||||
QUnit.test('default language can be set', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
Defaults.set('language', 'es');
|
||||
@ -202,7 +211,7 @@ test('default language can be set', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('lanugage set via options adds to default chain', function (assert) {
|
||||
QUnit.test('lanugage set via options adds to default chain', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
Defaults.set('language', 'es');
|
||||
@ -217,7 +226,7 @@ test('lanugage set via options adds to default chain', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('default language chain can be set', function (assert) {
|
||||
QUnit.test('default language chain can be set', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
Defaults.set('language', ['es', 'it', 'en']);
|
||||
@ -230,7 +239,7 @@ test('default language chain can be set', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('language can be set by lang attr', function (assert) {
|
||||
QUnit.test('language can be set by lang attr', function (assert) {
|
||||
var $element = $('<select lang="es"></select>');
|
||||
|
||||
var options = new Options({}, $element);
|
||||
@ -241,7 +250,7 @@ test('language can be set by lang attr', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('language can be inherited by lang attr', function (assert) {
|
||||
QUnit.test('language can be inherited by lang attr', function (assert) {
|
||||
var $element = $('<div lang="es"><select></select></div>').find('select');
|
||||
|
||||
var options = new Options({}, $element);
|
||||
@ -252,18 +261,23 @@ test('language can be inherited by lang attr', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('multi-part language can be inherited by lang attr', function (assert) {
|
||||
var $element = $('<div lang="pt-BR"><select></select></div>').find('select');
|
||||
QUnit.test(
|
||||
'multi-part language can be inherited by lang attr',
|
||||
function (assert) {
|
||||
var $element = $(
|
||||
'<div lang="pt-BR"><select></select></div>'
|
||||
).find('select');
|
||||
|
||||
var options = new Options({}, $element);
|
||||
var options = new Options({}, $element);
|
||||
|
||||
assert.deepEqual(
|
||||
options.get('language'),
|
||||
['pt-BR', 'pt', 'en']
|
||||
);
|
||||
});
|
||||
assert.deepEqual(
|
||||
options.get('language'),
|
||||
['pt-BR', 'pt', 'en']
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
test('lang attr overrides default language', function (assert) {
|
||||
QUnit.test('lang attr overrides default language', function (assert) {
|
||||
var $element = $('<select lang="it"></select>');
|
||||
|
||||
Defaults.set('language', 'es');
|
||||
@ -276,7 +290,7 @@ test('lang attr overrides default language', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
test('default language overrides inherited lang attr', function (assert) {
|
||||
QUnit.test('default language overrides inherited lang attr', function (assert) {
|
||||
var $element = $('<div lang="it"><select></select></div>').find('select');
|
||||
|
||||
Defaults.set('language', 'es');
|
||||
|
@ -21,13 +21,16 @@ QUnit.test('width from style attribute', function (assert) {
|
||||
assert.equal(width, '50%');
|
||||
});
|
||||
|
||||
QUnit.test('width from style returns null if nothing is found', function (assert) {
|
||||
var $test = $('<select></selct>');
|
||||
QUnit.test(
|
||||
'width from style returns null if nothing is found',
|
||||
function (assert) {
|
||||
var $test = $('<select></selct>');
|
||||
|
||||
var width = select._resolveWidth($test, 'style');
|
||||
var width = select._resolveWidth($test, 'style');
|
||||
|
||||
assert.equal(width, null);
|
||||
});
|
||||
assert.equal(width, null);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('width from computed element width', function (assert) {
|
||||
var $style = $(
|
||||
@ -51,34 +54,40 @@ QUnit.test('resolve gets the style if it is there', function (assert) {
|
||||
assert.equal(width, '20%');
|
||||
});
|
||||
|
||||
QUnit.test('resolve falls back to element if there is no style', function (assert) {
|
||||
var $style = $(
|
||||
'<style type="text/css">.css-set-width { width: 500px; }</style>'
|
||||
);
|
||||
var $test = $('<select class="css-set-width"></select>');
|
||||
QUnit.test(
|
||||
'resolve falls back to element if there is no style',
|
||||
function (assert) {
|
||||
var $style = $(
|
||||
'<style type="text/css">.css-set-width { width: 500px; }</style>'
|
||||
);
|
||||
var $test = $('<select class="css-set-width"></select>');
|
||||
|
||||
$('#qunit-fixture').append($style);
|
||||
$('#qunit-fixture').append($test);
|
||||
$('#qunit-fixture').append($style);
|
||||
$('#qunit-fixture').append($test);
|
||||
|
||||
var width = select._resolveWidth($test, 'resolve');
|
||||
var width = select._resolveWidth($test, 'resolve');
|
||||
|
||||
assert.equal(width, '500px');
|
||||
});
|
||||
assert.equal(width, '500px');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('computedstyle gets the style if parent is invisible', function (assert) {
|
||||
var $style = $(
|
||||
'<style type="text/css">.css-set-width { width: 500px; }</style>'
|
||||
);
|
||||
var $test = $(
|
||||
'<div style="display:none;">' +
|
||||
'<select class="css-set-width"></select>' +
|
||||
'</div>'
|
||||
);
|
||||
QUnit.test(
|
||||
'computedstyle gets the style if parent is invisible',
|
||||
function (assert) {
|
||||
var $style = $(
|
||||
'<style type="text/css">.css-set-width { width: 500px; }</style>'
|
||||
);
|
||||
var $test = $(
|
||||
'<div style="display:none;">' +
|
||||
'<select class="css-set-width"></select>' +
|
||||
'</div>'
|
||||
);
|
||||
|
||||
$('#qunit-fixture').append($style);
|
||||
$('#qunit-fixture').append($test);
|
||||
$('#qunit-fixture').append($style);
|
||||
$('#qunit-fixture').append($test);
|
||||
|
||||
var width = select._resolveWidth($test.find('select'), 'computedstyle');
|
||||
var width = select._resolveWidth($test.find('select'), 'computedstyle');
|
||||
|
||||
assert.equal(width, '500px');
|
||||
});
|
||||
assert.equal(width, '500px');
|
||||
}
|
||||
);
|
||||
|
@ -14,12 +14,15 @@ QUnit.test('role of results should be a listbox', function (assert) {
|
||||
assert.equal($results.attr('role'), 'listbox');
|
||||
});
|
||||
|
||||
QUnit.test('multiple select should have aria-multiselectable', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({
|
||||
multiple: true
|
||||
}));
|
||||
QUnit.test(
|
||||
'multiple select should have aria-multiselectable',
|
||||
function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({
|
||||
multiple: true
|
||||
}));
|
||||
|
||||
var $results = results.render();
|
||||
var $results = results.render();
|
||||
|
||||
assert.equal($results.attr('aria-multiselectable'), 'true');
|
||||
});
|
||||
assert.equal($results.attr('aria-multiselectable'), 'true');
|
||||
}
|
||||
);
|
||||
|
@ -42,53 +42,56 @@ QUnit.test('results:all with no data skips results:focus', function (assert) {
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test('results:all triggers results:focus on the first item', function (assert) {
|
||||
assert.expect(2);
|
||||
QUnit.test(
|
||||
'results:all triggers results:focus on the first item',
|
||||
function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
var $ = require('jquery');
|
||||
var $ = require('jquery');
|
||||
|
||||
var $select = $('<select></select>');
|
||||
var $parent = $('<div></div>');
|
||||
var $select = $('<select></select>');
|
||||
var $parent = $('<div></div>');
|
||||
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$select.appendTo($parent);
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$select.appendTo($parent);
|
||||
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
|
||||
var Results = require('select2/results');
|
||||
var Results = require('select2/results');
|
||||
|
||||
var results = new Results($select, new Options({}));
|
||||
var results = new Results($select, new Options({}));
|
||||
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
|
||||
results.render();
|
||||
results.render();
|
||||
|
||||
results.bind(container, $container);
|
||||
results.bind(container, $container);
|
||||
|
||||
results.on('results:focus', function (params) {
|
||||
assert.equal(params.data.id, 'test');
|
||||
assert.equal(params.data.text, 'Test');
|
||||
});
|
||||
results.on('results:focus', function (params) {
|
||||
assert.equal(params.data.id, 'test');
|
||||
assert.equal(params.data.text, 'Test');
|
||||
});
|
||||
|
||||
container.trigger('results:all', {
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
});
|
||||
container.trigger('results:all', {
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('results:append does not trigger results:focus', function (assert) {
|
||||
assert.expect(0);
|
||||
@ -189,53 +192,56 @@ QUnit.test('scrollAfterSelect triggers results:focus', function (assert) {
|
||||
container.trigger('select', {});
|
||||
});
|
||||
|
||||
QUnit.test('!scrollAfterSelect does not trigger results:focus', function (assert) {
|
||||
assert.expect(1);
|
||||
QUnit.test(
|
||||
'!scrollAfterSelect does not trigger results:focus',
|
||||
function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var $ = require('jquery');
|
||||
var $ = require('jquery');
|
||||
|
||||
var $select = $('<select></select>');
|
||||
var $parent = $('<div></div>');
|
||||
var $select = $('<select></select>');
|
||||
var $parent = $('<div></div>');
|
||||
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$select.appendTo($parent);
|
||||
$parent.appendTo($('#qunit-fixture'));
|
||||
$select.appendTo($parent);
|
||||
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
|
||||
var Results = require('select2/results');
|
||||
var Results = require('select2/results');
|
||||
|
||||
var options = new Options({ scrollAfterSelect: false });
|
||||
var results = new Results($select, options);
|
||||
var options = new Options({ scrollAfterSelect: false });
|
||||
var results = new Results($select, options);
|
||||
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
|
||||
results.render();
|
||||
results.render();
|
||||
|
||||
results.bind(container, $container);
|
||||
results.bind(container, $container);
|
||||
|
||||
// check that default for scrollAfterSelect is false
|
||||
assert.equal(options.get('scrollAfterSelect'), false);
|
||||
// check that default for scrollAfterSelect is false
|
||||
assert.equal(options.get('scrollAfterSelect'), false);
|
||||
|
||||
results.append({
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
});
|
||||
results.append({
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
results.on('results:focus', function () {
|
||||
assert.ok(false, 'The results:focus event was triggered');
|
||||
});
|
||||
results.on('results:focus', function () {
|
||||
assert.ok(false, 'The results:focus event was triggered');
|
||||
});
|
||||
|
||||
container.trigger('select', {});
|
||||
});
|
||||
container.trigger('select', {});
|
||||
}
|
||||
);
|
||||
|
@ -1,53 +1,56 @@
|
||||
QUnit.module('Results - Infinite scrolling');
|
||||
|
||||
QUnit.test('loadingMore is triggered even without a scrollbar', function (assert) {
|
||||
assert.expect(1);
|
||||
QUnit.test(
|
||||
'loadingMore is triggered even without a scrollbar',
|
||||
function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var $ = require('jquery');
|
||||
var $ = require('jquery');
|
||||
|
||||
var $select = $('<select></select>');
|
||||
var $select = $('<select></select>');
|
||||
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
var $container = $('<span></span>');
|
||||
var container = new MockContainer();
|
||||
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
var Utils = require('select2/utils');
|
||||
var Options = require('select2/options');
|
||||
|
||||
var Results = require('select2/results');
|
||||
var InfiniteScroll = require('select2/dropdown/infiniteScroll');
|
||||
var Results = require('select2/results');
|
||||
var InfiniteScroll = require('select2/dropdown/infiniteScroll');
|
||||
|
||||
var InfiniteScrollResults = Utils.Decorate(Results, InfiniteScroll);
|
||||
var InfiniteScrollResults = Utils.Decorate(Results, InfiniteScroll);
|
||||
|
||||
var results = new InfiniteScrollResults($select, new Options({}));
|
||||
var results = new InfiniteScrollResults($select, new Options({}));
|
||||
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
// Fake the data adapter for the `setClasses` method
|
||||
results.data = {};
|
||||
results.data.current = function (callback) {
|
||||
callback([{ id: 'test' }]);
|
||||
};
|
||||
|
||||
$('#qunit-fixture').append(results.render());
|
||||
$('#qunit-fixture').append(results.render());
|
||||
|
||||
results.bind(container, $container);
|
||||
results.bind(container, $container);
|
||||
|
||||
results.on('query:append', function () {
|
||||
assert.ok(true, 'It tried to load more immediately');
|
||||
});
|
||||
results.on('query:append', function () {
|
||||
assert.ok(true, 'It tried to load more immediately');
|
||||
});
|
||||
|
||||
container.trigger('results:all', {
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
container.trigger('results:all', {
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
id: 'test',
|
||||
text: 'Test'
|
||||
}
|
||||
],
|
||||
pagination: {
|
||||
more: true
|
||||
}
|
||||
],
|
||||
pagination: {
|
||||
more: true
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('loadingMore is not triggered without scrolling', function (assert) {
|
||||
assert.expect(0);
|
||||
|
@ -6,49 +6,61 @@ var Options = require('select2/options');
|
||||
|
||||
var Results = require('select2/results');
|
||||
|
||||
QUnit.test('disabled property on option is respected - enabled', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
QUnit.test(
|
||||
'disabled property on option is respected - enabled',
|
||||
function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
|
||||
var $option = $('<option></option>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
var $option = $('<option></option>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
|
||||
assert.notEqual(option.getAttribute('aria-disabled'), 'true');
|
||||
});
|
||||
assert.notEqual(option.getAttribute('aria-disabled'), 'true');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('disabled property on option is respected - disabled', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
QUnit.test(
|
||||
'disabled property on option is respected - disabled',
|
||||
function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
|
||||
var $option = $('<option disabled></option>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
var $option = $('<option disabled></option>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
|
||||
assert.equal(option.getAttribute('aria-disabled'), 'true');
|
||||
});
|
||||
assert.equal(option.getAttribute('aria-disabled'), 'true');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('disabled property on enabled optgroup is respected', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
QUnit.test(
|
||||
'disabled property on enabled optgroup is respected',
|
||||
function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
|
||||
var $option = $('<optgroup></optgroup>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
var $option = $('<optgroup></optgroup>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
|
||||
assert.notEqual(option.getAttribute('aria-disabled'), 'true');
|
||||
});
|
||||
assert.notEqual(option.getAttribute('aria-disabled'), 'true');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('disabled property on disabled optgroup is respected', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
QUnit.test(
|
||||
'disabled property on disabled optgroup is respected',
|
||||
function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
|
||||
var $option = $('<optgroup disabled></optgroup>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
var $option = $('<optgroup disabled></optgroup>');
|
||||
var option = results.option({
|
||||
element: $option[0]
|
||||
});
|
||||
|
||||
assert.equal(option.getAttribute('aria-disabled'), 'true');
|
||||
});
|
||||
assert.equal(option.getAttribute('aria-disabled'), 'true');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('option in disabled optgroup is disabled', function (assert) {
|
||||
var results = new Results($('<select></select>'), new Options({}));
|
||||
|
@ -42,23 +42,25 @@ QUnit.test('clear is not displayed for single placeholder', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('clear is not displayed for multiple placeholder', function (assert) {
|
||||
var selection = new AllowClearPlaceholder(
|
||||
$('#qunit-fixture .multiple'),
|
||||
allowClearOptions
|
||||
);
|
||||
QUnit.test(
|
||||
'clear is not displayed for multiple placeholder',
|
||||
function (assert) {
|
||||
var selection = new AllowClearPlaceholder(
|
||||
$('#qunit-fixture .multiple'),
|
||||
allowClearOptions
|
||||
);
|
||||
|
||||
var $selection = selection.render();
|
||||
var $selection = selection.render();
|
||||
|
||||
selection.update([]);
|
||||
|
||||
assert.equal(
|
||||
$selection.find('.select2-selection__clear').length,
|
||||
0,
|
||||
'The clear icon should not be displayed'
|
||||
);
|
||||
});
|
||||
selection.update([]);
|
||||
|
||||
assert.equal(
|
||||
$selection.find('.select2-selection__clear').length,
|
||||
0,
|
||||
'The clear icon should not be displayed'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('clear is displayed for placeholder', function (assert) {
|
||||
var selection = new AllowClearPlaceholder(
|
||||
@ -178,38 +180,41 @@ QUnit.test('clicking clear will trigger the unselect event', function (assert) {
|
||||
$remove.trigger('mousedown');
|
||||
});
|
||||
|
||||
QUnit.test('preventing the unselect event cancels the clearing', function (assert) {
|
||||
var $element = $('#qunit-fixture .single-with-placeholder');
|
||||
QUnit.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 = new AllowClearPlaceholder(
|
||||
$element,
|
||||
allowClearOptions
|
||||
);
|
||||
var container = new MockContainer();
|
||||
|
||||
var $selection = selection.render();
|
||||
var $selection = selection.render();
|
||||
|
||||
selection.bind(container, $('<div></div>'));
|
||||
selection.bind(container, $('<div></div>'));
|
||||
|
||||
$element.val('One');
|
||||
selection.update([{
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
}]);
|
||||
$element.val('One');
|
||||
selection.update([{
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
}]);
|
||||
|
||||
selection.on('unselect', function (ev) {
|
||||
ev.prevented = true;
|
||||
});
|
||||
selection.on('unselect', function (ev) {
|
||||
ev.prevented = true;
|
||||
});
|
||||
|
||||
var $remove = $selection.find('.select2-selection__clear');
|
||||
$remove.trigger('mousedown');
|
||||
var $remove = $selection.find('.select2-selection__clear');
|
||||
$remove.trigger('mousedown');
|
||||
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'One',
|
||||
'The placeholder should not have been set'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'One',
|
||||
'The placeholder should not have been set'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('clicking clear will trigger the clear event', function (assert) {
|
||||
assert.expect(5);
|
||||
@ -266,38 +271,41 @@ QUnit.test('clicking clear will trigger the clear event', function (assert) {
|
||||
$remove.trigger('mousedown');
|
||||
});
|
||||
|
||||
QUnit.test('preventing the clear event cancels the clearing', function (assert) {
|
||||
var $element = $('#qunit-fixture .single-with-placeholder');
|
||||
QUnit.test(
|
||||
'preventing the clear 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 = new AllowClearPlaceholder(
|
||||
$element,
|
||||
allowClearOptions
|
||||
);
|
||||
var container = new MockContainer();
|
||||
|
||||
var $selection = selection.render();
|
||||
var $selection = selection.render();
|
||||
|
||||
selection.bind(container, $('<div></div>'));
|
||||
selection.bind(container, $('<div></div>'));
|
||||
|
||||
$element.val('One');
|
||||
selection.update([{
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
}]);
|
||||
$element.val('One');
|
||||
selection.update([{
|
||||
id: 'One',
|
||||
text: 'One'
|
||||
}]);
|
||||
|
||||
selection.on('clear', function (ev) {
|
||||
ev.prevented = true;
|
||||
});
|
||||
selection.on('clear', function (ev) {
|
||||
ev.prevented = true;
|
||||
});
|
||||
|
||||
var $remove = $selection.find('.select2-selection__clear');
|
||||
$remove.trigger('mousedown');
|
||||
var $remove = $selection.find('.select2-selection__clear');
|
||||
$remove.trigger('mousedown');
|
||||
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'One',
|
||||
'The placeholder should not have been set'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$element.val(),
|
||||
'One',
|
||||
'The placeholder should not have been set'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('clear does not work when disabled', function (assert) {
|
||||
var $element = $('#qunit-fixture .single-with-placeholder');
|
||||
@ -330,71 +338,74 @@ QUnit.test('clear does not work when disabled', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('clear button doesnt visually break selected options', function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
QUnit.test(
|
||||
'clear button doesnt visually break selected options',
|
||||
function (assert) {
|
||||
var $element = $('<select></select>');
|
||||
|
||||
var Selection = Utils.Decorate(
|
||||
Utils.Decorate(MultipleSelection, Placeholder),
|
||||
AllowClear
|
||||
);
|
||||
var Selection = Utils.Decorate(
|
||||
Utils.Decorate(MultipleSelection, Placeholder),
|
||||
AllowClear
|
||||
);
|
||||
|
||||
var selection = new Selection(
|
||||
$element,
|
||||
allowClearOptions
|
||||
);
|
||||
var container = new MockContainer();
|
||||
var selection = new Selection(
|
||||
$element,
|
||||
allowClearOptions
|
||||
);
|
||||
var container = new MockContainer();
|
||||
|
||||
var $container = $(
|
||||
'<span class="select2-container select2-container--default"></span>'
|
||||
);
|
||||
$('#qunit-fixture').append($container);
|
||||
var $container = $(
|
||||
'<span class="select2-container select2-container--default"></span>'
|
||||
);
|
||||
$('#qunit-fixture').append($container);
|
||||
|
||||
var $selection = selection.render();
|
||||
$container.append($selection);
|
||||
$container.css('width', '100px');
|
||||
var $selection = selection.render();
|
||||
$container.append($selection);
|
||||
$container.css('width', '100px');
|
||||
|
||||
selection.bind(container, $container);
|
||||
selection.bind(container, $container);
|
||||
|
||||
selection.update([{
|
||||
id: '1',
|
||||
text: '1'
|
||||
}]);
|
||||
|
||||
var singleHeight = $container.height();
|
||||
|
||||
selection.update([
|
||||
{
|
||||
id: '10',
|
||||
text: '10'
|
||||
},
|
||||
{
|
||||
id: '20',
|
||||
text: '20'
|
||||
}
|
||||
]);
|
||||
|
||||
var doubleHeight = $container.height();
|
||||
|
||||
selection.update([
|
||||
{
|
||||
selection.update([{
|
||||
id: '1',
|
||||
text: '1'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
text: '2'
|
||||
}
|
||||
]);
|
||||
}]);
|
||||
|
||||
assert.notEqual(
|
||||
singleHeight,
|
||||
doubleHeight,
|
||||
'The height of the two different rows should be different'
|
||||
);
|
||||
var singleHeight = $container.height();
|
||||
|
||||
assert.equal(
|
||||
$container.height(),
|
||||
doubleHeight,
|
||||
'There should be two full lines of selections'
|
||||
);
|
||||
});
|
||||
selection.update([
|
||||
{
|
||||
id: '10',
|
||||
text: '10'
|
||||
},
|
||||
{
|
||||
id: '20',
|
||||
text: '20'
|
||||
}
|
||||
]);
|
||||
|
||||
var doubleHeight = $container.height();
|
||||
|
||||
selection.update([
|
||||
{
|
||||
id: '1',
|
||||
text: '1'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
text: '2'
|
||||
}
|
||||
]);
|
||||
|
||||
assert.notEqual(
|
||||
singleHeight,
|
||||
doubleHeight,
|
||||
'The height of the two different rows should be different'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
$container.height(),
|
||||
doubleHeight,
|
||||
'There should be two full lines of selections'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
@ -144,29 +144,32 @@ QUnit.test('update sets the title to the data title', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('update should clear title for placeholder options', function (assert) {
|
||||
var selection = new MultipleSelection(
|
||||
$('#qunit-fixture .multiple'),
|
||||
options
|
||||
);
|
||||
QUnit.test('update should clear title for placeholder options',
|
||||
function (assert) {
|
||||
var selection = new MultipleSelection(
|
||||
$('#qunit-fixture .multiple'),
|
||||
options
|
||||
);
|
||||
|
||||
var $selection = selection.render();
|
||||
var $selection = selection.render();
|
||||
|
||||
selection.update([{
|
||||
id: '',
|
||||
text: ''
|
||||
}]);
|
||||
selection.update([{
|
||||
id: '',
|
||||
text: ''
|
||||
}]);
|
||||
|
||||
var $rendered = $selection.find('.select2-selection__rendered li');
|
||||
var $rendered = $selection.find('.select2-selection__rendered li');
|
||||
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if a placeholder is rendered'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if a placeholder is rendered'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('update should clear title for options without text', function (assert) {
|
||||
QUnit.test(
|
||||
'update should clear title for options without text', function (assert) {
|
||||
var selection = new MultipleSelection(
|
||||
$('#qunit-fixture .multiple'),
|
||||
options
|
||||
|
@ -32,18 +32,20 @@ QUnit.test('normalizing placeholder ignores objects', function (assert) {
|
||||
assert.equal(original, normalized);
|
||||
});
|
||||
|
||||
QUnit.test('normalizing placeholder gives object for string', function (assert) {
|
||||
var selection = new SinglePlaceholder(
|
||||
$('#qunit-fixture .single'),
|
||||
placeholderOptions
|
||||
);
|
||||
QUnit.test(
|
||||
'normalizing placeholder gives object for string',
|
||||
function (assert) {
|
||||
var selection = new SinglePlaceholder(
|
||||
$('#qunit-fixture .single'),
|
||||
placeholderOptions
|
||||
);
|
||||
|
||||
var normalized = selection.normalizePlaceholder('placeholder');
|
||||
|
||||
assert.equal(normalized.id, '');
|
||||
assert.equal(normalized.text, 'placeholder');
|
||||
});
|
||||
var normalized = selection.normalizePlaceholder('placeholder');
|
||||
|
||||
assert.equal(normalized.id, '');
|
||||
assert.equal(normalized.text, 'placeholder');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('text is shown for placeholder option on single', function (assert) {
|
||||
var selection = new SinglePlaceholder(
|
||||
@ -60,15 +62,18 @@ QUnit.test('text is shown for placeholder option on single', function (assert) {
|
||||
assert.equal($selection.text(), 'This is the placeholder');
|
||||
});
|
||||
|
||||
QUnit.test('placeholder is shown when no options are selected', function (assert) {
|
||||
var selection = new SinglePlaceholder(
|
||||
$('#qunit-fixture .multiple'),
|
||||
placeholderOptions
|
||||
);
|
||||
QUnit.test(
|
||||
'placeholder is shown when no options are selected',
|
||||
function (assert) {
|
||||
var selection = new SinglePlaceholder(
|
||||
$('#qunit-fixture .multiple'),
|
||||
placeholderOptions
|
||||
);
|
||||
|
||||
var $selection = selection.render();
|
||||
var $selection = selection.render();
|
||||
|
||||
selection.update([]);
|
||||
selection.update([]);
|
||||
|
||||
assert.equal($selection.text(), 'This is the placeholder');
|
||||
});
|
||||
assert.equal($selection.text(), 'This is the placeholder');
|
||||
}
|
||||
);
|
||||
|
@ -49,104 +49,116 @@ QUnit.test('aria-autocomplete attribute is present', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('aria-activedescendant should not be set initiailly', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should not be set initiailly',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
|
||||
var $search = $selection.find('input');
|
||||
var $search = $selection.find('input');
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'The search box should not point to anything when it is first rendered'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'The search box should not point to anything when it is first rendered'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-activedescendant should be set after highlight', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should be set after highlight',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
|
||||
container.trigger('results:focus', {
|
||||
data: {
|
||||
_resultId: 'test'
|
||||
}
|
||||
});
|
||||
container.trigger('results:focus', {
|
||||
data: {
|
||||
_resultId: 'test'
|
||||
}
|
||||
});
|
||||
|
||||
var $search = $selection.find('input');
|
||||
var $search = $selection.find('input');
|
||||
|
||||
assert.equal(
|
||||
$search.attr('aria-activedescendant'),
|
||||
'test',
|
||||
'The search is pointing to the focused result'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$search.attr('aria-activedescendant'),
|
||||
'test',
|
||||
'The search is pointing to the focused result'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('activedescendant should remove if there is no ID', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
QUnit.test(
|
||||
'activedescendant should remove if there is no ID',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
|
||||
var $search = $selection.find('input');
|
||||
$search.attr('aria-activedescendant', 'test');
|
||||
var $search = $selection.find('input');
|
||||
$search.attr('aria-activedescendant', 'test');
|
||||
|
||||
container.trigger('results:focus', {
|
||||
data: {}
|
||||
});
|
||||
container.trigger('results:focus', {
|
||||
data: {}
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no result for the search to be pointing to'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no result for the search to be pointing to'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-activedescendant should be removed when closed', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
QUnit.test(
|
||||
'aria-activedescendant should be removed when closed',
|
||||
function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var selection = new CustomSelection($select, options);
|
||||
var $selection = selection.render();
|
||||
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
var container = new MockContainer();
|
||||
selection.bind(container, $('<span></span>'));
|
||||
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
|
||||
var $search = $selection.find('input');
|
||||
$search.attr('aria-activedescendant', 'something');
|
||||
var $search = $selection.find('input');
|
||||
$search.attr('aria-activedescendant', 'something');
|
||||
|
||||
container.trigger('close');
|
||||
container.trigger('close');
|
||||
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no active descendant when the dropdown is closed'
|
||||
);
|
||||
});
|
||||
assert.ok(
|
||||
!$search.attr('aria-activedescendant'),
|
||||
'There is no active descendant when the dropdown is closed'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('aria-controls should not be set initiailly', function (assert) {
|
||||
var $select = $('#qunit-fixture .multiple');
|
||||
|
@ -218,34 +218,37 @@ QUnit.test('search box without text should propagate click', function (assert) {
|
||||
$search.trigger('click');
|
||||
});
|
||||
|
||||
QUnit.test('search box with text should not propagate click', function (assert) {
|
||||
assert.expect(0);
|
||||
QUnit.test(
|
||||
'search box with text should not propagate click',
|
||||
function (assert) {
|
||||
assert.expect(0);
|
||||
|
||||
var $container = $('#qunit-fixture .event-container');
|
||||
var container = new MockContainer();
|
||||
var $container = $('#qunit-fixture .event-container');
|
||||
var container = new MockContainer();
|
||||
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
|
||||
|
||||
var $element = $('#qunit-fixture .multiple');
|
||||
var selection = new CustomSelection($element, options);
|
||||
var $element = $('#qunit-fixture .multiple');
|
||||
var selection = new CustomSelection($element, options);
|
||||
|
||||
var $selection = selection.render();
|
||||
selection.bind(container, $container);
|
||||
var $selection = selection.render();
|
||||
selection.bind(container, $container);
|
||||
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
// Update the selection so the search is rendered
|
||||
selection.update([]);
|
||||
|
||||
// Make it visible so the browser can place focus on the search
|
||||
$container.append($selection);
|
||||
// Make it visible so the browser can place focus on the search
|
||||
$container.append($selection);
|
||||
|
||||
$selection.on('click', function () {
|
||||
assert.ok(false, 'The click event should have been trapped');
|
||||
});
|
||||
$selection.on('click', function () {
|
||||
assert.ok(false, 'The click event should have been trapped');
|
||||
});
|
||||
|
||||
var $search = $selection.find('input');
|
||||
$search.val('test');
|
||||
$search.trigger('click');
|
||||
});
|
||||
var $search = $selection.find('input');
|
||||
$search.val('test');
|
||||
$search.trigger('click');
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('search box with text should not close dropdown', function (assert) {
|
||||
assert.expect(0);
|
||||
|
@ -159,50 +159,56 @@ QUnit.test('update sets the title to the data title', function (assert) {
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test('update should clear title for placeholder options', function (assert) {
|
||||
var selection = new SingleSelection(
|
||||
$('#qunit-fixture .single'),
|
||||
options
|
||||
);
|
||||
QUnit.test(
|
||||
'update should clear title for placeholder options',
|
||||
function (assert) {
|
||||
var selection = new SingleSelection(
|
||||
$('#qunit-fixture .single'),
|
||||
options
|
||||
);
|
||||
|
||||
var $selection = selection.render();
|
||||
var $rendered = $selection.find('.select2-selection__rendered');
|
||||
var $selection = selection.render();
|
||||
var $rendered = $selection.find('.select2-selection__rendered');
|
||||
|
||||
$rendered.attr('title', 'testing');
|
||||
$rendered.attr('title', 'testing');
|
||||
|
||||
selection.update([{
|
||||
id: '',
|
||||
text: ''
|
||||
}]);
|
||||
selection.update([{
|
||||
id: '',
|
||||
text: ''
|
||||
}]);
|
||||
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if a placeholder is rendered'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if a placeholder is rendered'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('update should clear title for options without text', function (assert) {
|
||||
var selection = new SingleSelection(
|
||||
$('#qunit-fixture .single'),
|
||||
options
|
||||
);
|
||||
QUnit.test(
|
||||
'update should clear title for options without text',
|
||||
function (assert) {
|
||||
var selection = new SingleSelection(
|
||||
$('#qunit-fixture .single'),
|
||||
options
|
||||
);
|
||||
|
||||
var $selection = selection.render();
|
||||
var $rendered = $selection.find('.select2-selection__rendered');
|
||||
var $selection = selection.render();
|
||||
var $rendered = $selection.find('.select2-selection__rendered');
|
||||
|
||||
$rendered.attr('title', 'testing');
|
||||
$rendered.attr('title', 'testing');
|
||||
|
||||
selection.update([{
|
||||
id: ''
|
||||
}]);
|
||||
selection.update([{
|
||||
id: ''
|
||||
}]);
|
||||
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if there is no text or title property'
|
||||
);
|
||||
});
|
||||
assert.equal(
|
||||
$rendered.attr('title'),
|
||||
undefined,
|
||||
'The title should be removed if there is no text or title property'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test('escapeMarkup is being used', function (assert) {
|
||||
var selection = new SingleSelection(
|
||||
|
Loading…
Reference in New Issue
Block a user