2019-08-08 04:16:45 +03:00
|
|
|
QUnit.module('Accessibility - All');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
|
|
|
var BaseSelection = require('select2/selection/base');
|
|
|
|
var SingleSelection = require('select2/selection/single');
|
|
|
|
var MultipleSelection = require('select2/selection/multiple');
|
|
|
|
|
|
|
|
var $ = require('jquery');
|
|
|
|
|
|
|
|
var Options = require('select2/options');
|
|
|
|
var options = new Options({});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test('title is carried over from original element', function (assert) {
|
2015-01-15 06:54:19 +03:00
|
|
|
var $select = $('#qunit-fixture .single');
|
|
|
|
|
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('title'),
|
|
|
|
$select.attr('title'),
|
|
|
|
'The title should have been copied over from the original element'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test(
|
|
|
|
'aria-expanded reflects the state of the container',
|
|
|
|
function (assert) {
|
|
|
|
var $select = $('#qunit-fixture .single');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
var container = new MockContainer();
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
selection.bind(container, $('<span></span>'));
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-expanded'),
|
|
|
|
'false',
|
|
|
|
'The container should not be expanded when it is closed'
|
|
|
|
);
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
container.trigger('open');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-expanded'),
|
|
|
|
'true',
|
|
|
|
'The container should be expanded when it is opened'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
);
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test('static aria attributes are present', function (assert) {
|
2015-01-15 06:54:19 +03:00
|
|
|
var $select = $('#qunit-fixture .single');
|
|
|
|
|
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('role'),
|
|
|
|
'combobox',
|
|
|
|
'The container should identify as a combobox'
|
|
|
|
);
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-haspopup'),
|
|
|
|
'true',
|
|
|
|
'The dropdown is considered a popup of the container'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test('the container should be in the tab order', function (assert) {
|
2015-01-15 06:54:19 +03:00
|
|
|
var $select = $('#qunit-fixture .single');
|
|
|
|
|
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
|
|
|
|
|
|
|
var container = new MockContainer();
|
|
|
|
selection.bind(container, $('<span></span>'));
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'0',
|
|
|
|
'The tab index should allow it to fit in the natural tab order'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('disable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'-1',
|
|
|
|
'The selection should be dropped out of the tab order when disabled'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('enable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'0',
|
|
|
|
'The tab index should be restored when re-enabled'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test('a custom tabindex is copied', function (assert) {
|
2015-02-14 07:57:18 +03:00
|
|
|
var $select = $('#qunit-fixture .single');
|
|
|
|
$select.attr('tabindex', '999');
|
|
|
|
|
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
|
|
|
|
|
|
|
var container = new MockContainer();
|
|
|
|
selection.bind(container, $('<span></span>'));
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'999',
|
|
|
|
'The tab index should match the original tab index'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('disable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'-1',
|
|
|
|
'The selection should be dropped out of the tab order when disabled'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('enable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('tabindex'),
|
|
|
|
'999',
|
|
|
|
'The tab index should be restored when re-enabled'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test('aria-disabled should reflected disabled state', function (assert) {
|
2019-07-21 18:44:09 +03:00
|
|
|
var $select = $('#qunit-fixture .single');
|
|
|
|
|
|
|
|
var selection = new BaseSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
|
|
|
|
|
|
|
var container = new MockContainer();
|
|
|
|
selection.bind(container, $('<span></span>'));
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-disabled'),
|
|
|
|
'false',
|
|
|
|
'The tab index should match the original tab index'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('disable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-disabled'),
|
|
|
|
'true',
|
|
|
|
'The selection should be dropped out of the tab order when disabled'
|
|
|
|
);
|
|
|
|
|
|
|
|
container.trigger('enable');
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-disabled'),
|
|
|
|
'false',
|
|
|
|
'The tab index should be restored when re-enabled'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.module('Accessibility - Single');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.test(
|
|
|
|
'aria-labelledby should match the rendered container',
|
|
|
|
function (assert) {
|
|
|
|
var $select = $('#qunit-fixture .single');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
var selection = new SingleSelection($select, options);
|
|
|
|
var $selection = selection.render();
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
var container = new MockContainer();
|
|
|
|
selection.bind(container, $('<span></span>'));
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
var $rendered = $selection.find('.select2-selection__rendered');
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
assert.equal(
|
|
|
|
$selection.attr('aria-labelledby'),
|
|
|
|
$rendered.attr('id'),
|
|
|
|
'The rendered selection should label the container'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
);
|
2015-01-15 06:54:19 +03:00
|
|
|
|
2019-08-08 04:16:45 +03:00
|
|
|
QUnit.module('Accessibility - Multiple');
|