mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-24 02:38:40 +00:00
Add tests for ve.ui.MWParameterPage class
Change-Id: Ie09ef4745c006822cc66e845cb16f54d62fa3b7e
This commit is contained in:
parent
3f97610e6e
commit
3b59d7ce0d
|
@ -2824,6 +2824,7 @@
|
|||
"lib/ve/tests/ui/inspectors/ve.ui.FragmentInspector.test.js",
|
||||
"modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js",
|
||||
"modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js",
|
||||
"modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js",
|
||||
"modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js",
|
||||
"modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterSearchWidget.test.js",
|
||||
"modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js",
|
||||
|
|
99
modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js
Normal file
99
modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
QUnit.module( 've.ui.MWParameterPage', ve.test.utils.mwEnvironment );
|
||||
|
||||
[
|
||||
[ undefined, '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
[ 'content', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'line', '', OO.ui.TextInputWidget ],
|
||||
[ 'line', '\n', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'number', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'boolean', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
[ 'boolean', '0', ve.ui.MWParameterCheckboxInputWidget ],
|
||||
[ 'boolean', '1', ve.ui.MWParameterCheckboxInputWidget ],
|
||||
[ 'boolean', '2', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'string', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
[ 'date', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
[ 'unbalanced-wikitext', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
[ 'unknown', '', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'url', '', OO.ui.TextInputWidget ],
|
||||
[ 'url', 'http://example.com', OO.ui.TextInputWidget ],
|
||||
[ 'url', 'BadUrl', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'wiki-page-name', '', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-page-name', 'GoodTitle', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-page-name', '[[BadTitle]]', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'wiki-user-name', '', mw.widgets.UserInputWidget ],
|
||||
[ 'wiki-user-name', 'GoodTitle', mw.widgets.UserInputWidget ],
|
||||
[ 'wiki-user-name', '[[BadTitle]]', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'wiki-file-name', '', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-file-name', 'GoodTitle', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-file-name', '[[BadTitle]]', ve.ui.MWLazyMultilineTextInputWidget ],
|
||||
|
||||
[ 'wiki-template-name', '', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-template-name', 'GoodTitle', mw.widgets.TitleInputWidget ],
|
||||
[ 'wiki-template-name', '[[BadTitle]]', ve.ui.MWLazyMultilineTextInputWidget ]
|
||||
].forEach( ( [ type, value, expected ] ) =>
|
||||
QUnit.test( `createValueInput: ${type}, ${value}`, ( assert ) => {
|
||||
const transclusion = new ve.dm.MWTransclusionModel(),
|
||||
template = new ve.dm.MWTemplateModel( transclusion, {} ),
|
||||
parameter = new ve.dm.MWParameterModel( template, 'p', value );
|
||||
|
||||
template.getSpec().setTemplateData( { params: { p: { type } } } );
|
||||
|
||||
const page = new ve.ui.MWParameterPage( parameter ),
|
||||
input = page.createValueInput();
|
||||
|
||||
assert.strictEqual( input.constructor.name, expected.prototype.constructor.name );
|
||||
} )
|
||||
);
|
||||
|
||||
// TODO: Test suggestedvalues
|
||||
|
||||
[
|
||||
[
|
||||
'', '', false,
|
||||
'empty'
|
||||
],
|
||||
[
|
||||
'some value', '', true,
|
||||
'not empty'
|
||||
],
|
||||
[
|
||||
'', 'some default', true,
|
||||
'empty is meaningful because it is different from the default'
|
||||
],
|
||||
[
|
||||
'some value', 'some default', true,
|
||||
'value is different from the default'
|
||||
],
|
||||
[
|
||||
'same', 'same', true,
|
||||
'the default is probably not meaningful, but we can not be sure'
|
||||
],
|
||||
[
|
||||
' ', '', true,
|
||||
'whitespace is probably not meaningful, but we do not want to make this decision here'
|
||||
],
|
||||
[
|
||||
'', ' ', true,
|
||||
'same for the default'
|
||||
]
|
||||
].forEach( ( [ value, defaultValue, expected, message ] ) =>
|
||||
QUnit.test( 'containsSomeValue: ' + message, ( assert ) => {
|
||||
const transclusion = new ve.dm.MWTransclusionModel(),
|
||||
template = new ve.dm.MWTemplateModel( transclusion, {} ),
|
||||
parameter = new ve.dm.MWParameterModel( template, 'p', value );
|
||||
|
||||
template.getSpec().setTemplateData( { params: { p: { default: defaultValue } } } );
|
||||
|
||||
const page = new ve.ui.MWParameterPage( parameter );
|
||||
|
||||
assert.strictEqual( page.containsSomeValue(), expected );
|
||||
} )
|
||||
);
|
|
@ -386,7 +386,7 @@ ve.ui.MWParameterPage.prototype.isSuggestedValueType = function ( type ) {
|
|||
ve.ui.MWParameterPage.prototype.containsSomeValue = function () {
|
||||
// Note: For templates that allow overriding a default value with nothing, the empty string is
|
||||
// meaningful user input. For templates that don't, the parameter can never be truly empty.
|
||||
return this.valueInput.getValue() || this.defaultValue;
|
||||
return !!( this.valueInput.getValue() || this.defaultValue );
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue