Page MenuHomeWickedGov Phorge

mediawiki.widgets.UserInputWidget.test.js
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

mediawiki.widgets.UserInputWidget.test.js

/**
* MediaWiki Widgets UserInputWidget tests.
*/
QUnit.module( 'mediawiki.widgets.UserInputWidget' );
( function () {
const widgetWithDefaults = new mw.widgets.UserInputWidget( {} );
const widgetExcludingNamedAndTemp = new mw.widgets.UserInputWidget( {
excludetemp: true,
excludenamed: true
} );
QUnit.test( 'UserInputWidget initialization sets lookup status correctly', ( assert ) => {
assert.false( widgetWithDefaults.alwaysDisableLookups, 'Normal widget should have lookups enabled' );
assert.true( widgetExcludingNamedAndTemp.alwaysDisableLookups, 'Widget where named and temp users are excluded always should have lookups disabled' );
assert.false( widgetWithDefaults.lookupsDisabled, 'Normal widget should have lookups enabled initially' );
assert.true( widgetExcludingNamedAndTemp.lookupsDisabled, 'Widget where named and temp users are excluded should always have lookups disabled' );
} );
QUnit.test( 'UserInputWidget.setLookupsDisabled for default widget', ( assert ) => {
// Test that setLookupsDisabled() works normally for a default UserInputWidget
widgetWithDefaults.setLookupsDisabled( true );
assert.true( widgetWithDefaults.lookupsDisabled, 'Normal widget should allow lookups to be disabled' );
widgetWithDefaults.setLookupsDisabled( false );
assert.false( widgetWithDefaults.lookupsDisabled, 'Normal widget should allow lookups to be enabled' );
} );
QUnit.test( 'setLookupsDisabled() for widget that excludes named and temp users', ( assert ) => {
// Test that setLookupsDisabled() does not allow enabling lookups
widgetExcludingNamedAndTemp.setLookupsDisabled( false );
assert.true( widgetExcludingNamedAndTemp.lookupsDisabled, 'Widget that disallows temp and named users should not allow lookups' );
} );
QUnit.test( 'onLookupMenuChoose() for widget that excludes named and temp users', ( assert ) => {
// Test that onLookupMenuChoose() does not re-enable the lookups
widgetExcludingNamedAndTemp.onLookupMenuChoose( new OO.ui.MenuOptionWidget( { data: 'abc', label: 'test' } ) );
assert.true( widgetExcludingNamedAndTemp.lookupsDisabled, 'Widget that disallows temp and named users should not allow lookups' );
assert.strictEqual( widgetExcludingNamedAndTemp.$input.val(), 'abc', 'Value correctly set by ::onLookupMenuChoose' );
} );
QUnit.test( 'onLookupMenuChoose() for widget wth default config', ( assert ) => {
// Test that onLookupMenuChoose() re-enables lookup after the call, even if it was disabled before the call.
widgetWithDefaults.setLookupsDisabled( true );
widgetWithDefaults.onLookupMenuChoose( new OO.ui.MenuOptionWidget( { data: 'abc', label: 'test' } ) );
assert.false( widgetWithDefaults.lookupsDisabled, 'Widget that with default config should have re-enabled lookup after call' );
assert.strictEqual( widgetExcludingNamedAndTemp.$input.val(), 'abc', 'Value correctly set by ::onLookupMenuChoose' );
} );
QUnit.test( 'Lookup requests removes leading whitespaces from the username', ( assert ) => {
// Test that getLookupRequest() trims leading whitespaces from the username before calling the API
let callParams;
const widget = new mw.widgets.UserInputWidget( {
api: {
get: function ( parameters ) {
callParams = parameters;
}
}
} );
const testCases = [
{ input: '', expected: '' },
{ input: ' ', expected: '' },
{ input: 'username', expected: 'username' },
{ input: 'username ', expected: 'username ' },
{ input: ' username ', expected: 'username ' },
{ input: '1.2.3.4', expected: '1.2.3.4' },
{ input: ' 1.2.3.4', expected: '1.2.3.4' },
{ input: '1.2.3.4 ', expected: '1.2.3.4' },
{ input: ' 1.2.3.4 ', expected: '1.2.3.4' }
];
for ( const testCase of testCases ) {
widget.value = testCase.input;
widget.setLookupsDisabled( false );
widget.getLookupRequest(); // performs the actual API request
assert.propContains(
callParams,
{
action: 'query',
list: 'allusers',
auprefix: testCase.expected
}
);
}
} );
}() );

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 3, 10:45 (1 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
44/4f/e5fe87646759698c3382293769bd
Default Alt Text
mediawiki.widgets.UserInputWidget.test.js (3 KB)

Event Timeline