mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-24 03:52:58 +00:00
d315a3af88
In QUnit 2, QUnit.setup()/QUnit.teardown() were renamed, to be called QUnit.beforeEach()/QUnit.afterEach(). Though we are insulated by this through MediaWiki's wrapper for backwards compatibility, changing the names of the functions we pass to the new names allows us to drop the old ones. Bug: T170872 Change-Id: I5bfca33c1d4d920d54c2c54b483be78c61b6d0d7
123 lines
3.1 KiB
JavaScript
123 lines
3.1 KiB
JavaScript
/*!
|
|
* VisualEditor DataModel MWTransclusionModel tests.
|
|
*
|
|
* @copyright 2011-2020 VisualEditor Team and others; see http://ve.mit-license.org
|
|
*/
|
|
|
|
( function () {
|
|
QUnit.module( 've.dm.MWTransclusionModel', QUnit.newMwEnvironment( {
|
|
beforeEach: function () {
|
|
// Mock XHR for mw.Api()
|
|
this.server = this.sandbox.useFakeServer();
|
|
this.server.respondImmediately = true;
|
|
|
|
ve.test.utils.mwEnvironment.beforeEach.call( this );
|
|
},
|
|
afterEach: function () {
|
|
ve.test.utils.mwEnvironment.afterEach.call( this );
|
|
}
|
|
} ) );
|
|
|
|
function runAddPartTest( assert, name, response, server, callback ) {
|
|
var doc = ve.dm.Document.static.newBlankDocument(),
|
|
transclusion = new ve.dm.MWTransclusionModel( doc ),
|
|
part = ve.dm.MWTemplateModel.newFromName( transclusion, name ),
|
|
done = assert.async();
|
|
|
|
server.respondWith( [ 200, { 'Content-Type': 'application/json' }, JSON.stringify( response ) ] );
|
|
|
|
transclusion.addPart( part )
|
|
.then( function () {
|
|
callback( transclusion );
|
|
} )
|
|
.always( function () {
|
|
done();
|
|
} );
|
|
}
|
|
|
|
QUnit.test( 'fetch template part data', function ( assert ) {
|
|
var response = {
|
|
batchcomplete: '',
|
|
pages: {
|
|
1331311: {
|
|
title: 'Template:Test',
|
|
description: { en: 'MWTransclusionModel template test' },
|
|
params: {
|
|
test: {
|
|
label: { en: 'Test param' },
|
|
type: 'string',
|
|
description: { en: 'This is a test param' },
|
|
required: false,
|
|
suggested: false,
|
|
example: null,
|
|
deprecated: false,
|
|
aliases: [],
|
|
autovalue: null,
|
|
default: null
|
|
}
|
|
},
|
|
paramOrder: [ 'test' ],
|
|
format: 'inline',
|
|
sets: [],
|
|
maps: {}
|
|
}
|
|
}
|
|
};
|
|
|
|
runAddPartTest( assert, 'Test', response, this.server, function ( transclusion ) {
|
|
var parts = transclusion.getParts(),
|
|
spec = parts[ 0 ].getSpec();
|
|
|
|
assert.strictEqual( parts.length, 1 );
|
|
assert.strictEqual( spec.getDescription( 'en' ), 'MWTransclusionModel template test' );
|
|
assert.strictEqual( spec.getParameterLabel( 'test', 'en' ), 'Test param' );
|
|
} );
|
|
} );
|
|
|
|
// T243868
|
|
QUnit.test( 'fetch part data for parameterized template with no TemplateData', function ( assert ) {
|
|
var response = {
|
|
batchcomplete: '',
|
|
pages: {
|
|
1331311: {
|
|
title: 'Template:NoData',
|
|
notemplatedata: true,
|
|
params: {
|
|
foo: [],
|
|
bar: []
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
runAddPartTest( assert, 'NoData', response, this.server, function ( transclusion ) {
|
|
var parts = transclusion.getParts(),
|
|
spec = parts[ 0 ].getSpec();
|
|
|
|
assert.strictEqual( parts.length, 1 );
|
|
assert.deepEqual( spec.getParameterNames(), [ 'foo', 'bar' ] );
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'fetch part data for template with no TemplateData and no params', function ( assert ) {
|
|
var response = {
|
|
batchcomplete: '',
|
|
pages: {
|
|
1331311: {
|
|
title: 'Template:NoParams',
|
|
notemplatedata: true,
|
|
params: []
|
|
}
|
|
}
|
|
};
|
|
|
|
runAddPartTest( assert, 'NoParams', response, this.server, function ( transclusion ) {
|
|
var parts = transclusion.getParts(),
|
|
spec = parts[ 0 ].getSpec();
|
|
|
|
assert.strictEqual( parts.length, 1 );
|
|
assert.deepEqual( spec.getParameterNames(), [] );
|
|
} );
|
|
} );
|
|
}() );
|