mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Update static dependencies
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
module('Selection containers - Open On Key Down');
|
||||
|
||||
var KEYS = require('select2/keys');
|
||||
var $ = require('jquery');
|
||||
|
||||
/**
|
||||
* Build a keydown event with the given key code and extra options.
|
||||
*
|
||||
* @param {Number} keyCode the keyboard code to be used for the 'which'
|
||||
* attribute of the keydown event.
|
||||
* @param {Object} eventProps extra properties to build the keydown event.
|
||||
*
|
||||
* @return {jQuery.Event} a 'keydown' type event.
|
||||
*/
|
||||
function buildKeyDownEvent (keyCode, eventProps) {
|
||||
return $.Event('keydown', $.extend({}, { which: keyCode }, eventProps));
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper function providing a select2 element with a given enabled/disabled
|
||||
* state that will get a given keydown event triggered on it. Provide an
|
||||
* assertion callback function to test the results of the triggered event.
|
||||
*
|
||||
* @param {Boolean} isEnabled the enabled state of the desired select2
|
||||
* element.
|
||||
* @param {String} testName name for the test.
|
||||
* @param {Number} keyCode used to set the 'which' attribute of the
|
||||
* keydown event.
|
||||
* @param {Object} eventProps attributes to be used to build the keydown
|
||||
* event.
|
||||
* @param {Function} fn assertion callback to perform checks on the
|
||||
* result of triggering the event, receives the
|
||||
* 'assert' variable for the test and the select2
|
||||
* instance behind the built <select> element.
|
||||
* @return {null}
|
||||
*/
|
||||
function testAbled(isEnabled, testName, keyCode, eventProps, fn) {
|
||||
test(testName, function (assert) {
|
||||
var $element = $(
|
||||
'<select>' +
|
||||
'<option>one</option>' +
|
||||
'<option>two</option>' +
|
||||
'</select>'
|
||||
);
|
||||
$('#qunit-fixture').append($element);
|
||||
$element.select2({ disabled: !isEnabled });
|
||||
|
||||
var select2 = $element.data('select2');
|
||||
var $selection = select2.$selection;
|
||||
|
||||
assert.notOk(select2.isOpen(), 'The instance should not be open');
|
||||
assert.equal(select2.isEnabled(), isEnabled);
|
||||
|
||||
var event = buildKeyDownEvent(keyCode, eventProps);
|
||||
assert.ok(event.which, 'The event\'s key code (.which) should be set');
|
||||
|
||||
$selection.trigger(event);
|
||||
|
||||
fn(assert, select2);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the given keydown event on an enabled element. See #testAbled for
|
||||
* params.
|
||||
*/
|
||||
function testEnabled (testName, keyCode, eventProps, fn) {
|
||||
testAbled(true, testName, keyCode, eventProps, fn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the given keydown event on a disabled element. See #testAbled for
|
||||
* params.
|
||||
*/
|
||||
function testDisabled (testName, keyCode, eventProps, fn) {
|
||||
testAbled(false, testName, keyCode, eventProps, fn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assertion function used by the above test* wrappers. Asserts that the given
|
||||
* select2 instance is open.
|
||||
*
|
||||
* @param {Assert} assert
|
||||
* @param {Select2} select
|
||||
* @return {null}
|
||||
*/
|
||||
function assertOpened (assert, select2) {
|
||||
assert.ok(select2.isOpen(), 'The element should be open');
|
||||
}
|
||||
|
||||
/**
|
||||
* Assertion function used by the above test* wrappers. Asserts that the given
|
||||
* select2 instance is not open.
|
||||
*
|
||||
* @param {Assert} assert
|
||||
* @param {Select2} select
|
||||
* @return {null}
|
||||
*/
|
||||
function assertNotOpened (assert, select2) {
|
||||
assert.notOk(select2.isOpen(), 'The element should not be open');
|
||||
}
|
||||
|
||||
/**
|
||||
* ENTER, SPACE, and ALT+DOWN should all open an enabled select2 element.
|
||||
*/
|
||||
testEnabled(
|
||||
'enabled element will open on ENTER',
|
||||
KEYS.ENTER, {},
|
||||
assertOpened
|
||||
);
|
||||
testEnabled(
|
||||
'enabled element will open on SPACE',
|
||||
KEYS.SPACE, {},
|
||||
assertOpened
|
||||
);
|
||||
testEnabled(
|
||||
'enabled element will open on ALT+DOWN',
|
||||
KEYS.DOWN, { altKey: true },
|
||||
assertOpened
|
||||
);
|
||||
|
||||
/**
|
||||
* Some other keys triggered on an enabled select2 element should not open it.
|
||||
*/
|
||||
testEnabled(
|
||||
'enabled element will not open on UP',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testEnabled(
|
||||
'enabled element will not open on DOWN',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testEnabled(
|
||||
'enabled element will not open on LEFT',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testEnabled(
|
||||
'enabled element will not open on RIGHT',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
|
||||
/*
|
||||
* The keys that will open an enabled select2 element should not open a disabled
|
||||
* one.
|
||||
*/
|
||||
testDisabled(
|
||||
'disabled element will not open on ENTER',
|
||||
KEYS.ENTER, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testDisabled(
|
||||
'disabled element will not open on SPACE',
|
||||
KEYS.SPACE, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testDisabled(
|
||||
'disabled element will not open on ALT+DOWN',
|
||||
KEYS.DOWN, { altKey: true },
|
||||
assertNotOpened
|
||||
);
|
||||
|
||||
/**
|
||||
* Other keys should continue to not open a disabled select2 element.
|
||||
*/
|
||||
testDisabled(
|
||||
'disabled element will not open on UP',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testDisabled(
|
||||
'disabled element will not open on DOWN',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testDisabled(
|
||||
'disabled element will not open on LEFT',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
||||
testDisabled(
|
||||
'disabled element will not open on RIGHT',
|
||||
KEYS.UP, {},
|
||||
assertNotOpened
|
||||
);
|
Reference in New Issue
Block a user