mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-18 17:21:25 +00:00
d59a4366db
The numeric part of these ids is never used on it's own. There is no need to expose it. Note we renamed the method not long ago in I6eeab8b to reflect better what it does. This is the next step. We just forgot it back then. Change-Id: I5da82855e99ea3a42a5d91379c6974ae9c154518
126 lines
3.3 KiB
JavaScript
126 lines
3.3 KiB
JavaScript
/*!
|
|
* VisualEditor DataModel MWTransclusionModel tests.
|
|
*
|
|
* @copyright 2011-2020 VisualEditor Team and others; see http://ve.mit-license.org
|
|
*/
|
|
|
|
{
|
|
QUnit.module( 've.dm.MWTransclusionModel', ve.test.utils.newMwEnvironment( {
|
|
beforeEach() {
|
|
// Mock XHR for mw.Api()
|
|
this.server = this.sandbox.useFakeServer();
|
|
this.server.respondImmediately = true;
|
|
|
|
}
|
|
} ) );
|
|
|
|
const runAddPartTest = function ( assert, name, response, server, callback ) {
|
|
const 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( () => {
|
|
callback( transclusion );
|
|
} )
|
|
.always( () => {
|
|
done();
|
|
} );
|
|
};
|
|
|
|
QUnit.test( 'nextUniquePartId', function ( assert ) {
|
|
const transclusion = new ve.dm.MWTransclusionModel();
|
|
assert.strictEqual( transclusion.nextUniquePartId(), 'part_0' );
|
|
assert.strictEqual( transclusion.nextUniquePartId(), 'part_1' );
|
|
assert.strictEqual( transclusion.nextUniquePartId(), 'part_2' );
|
|
} );
|
|
|
|
QUnit.test( 'fetch template part data', function ( assert ) {
|
|
const 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, ( transclusion ) => {
|
|
const 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 ) {
|
|
const response = {
|
|
batchcomplete: '',
|
|
pages: {
|
|
1331311: {
|
|
title: 'Template:NoData',
|
|
notemplatedata: true,
|
|
params: {
|
|
foo: [],
|
|
bar: []
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
runAddPartTest( assert, 'NoData', response, this.server, ( transclusion ) => {
|
|
const parts = transclusion.getParts(),
|
|
spec = parts[ 0 ].getSpec();
|
|
|
|
assert.strictEqual( parts.length, 1 );
|
|
assert.deepEqual( spec.getKnownParameterNames(), [ 'foo', 'bar' ] );
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'fetch part data for template with no TemplateData and no params', function ( assert ) {
|
|
const response = {
|
|
batchcomplete: '',
|
|
pages: {
|
|
1331311: {
|
|
title: 'Template:NoParams',
|
|
notemplatedata: true,
|
|
params: []
|
|
}
|
|
}
|
|
};
|
|
|
|
runAddPartTest( assert, 'NoParams', response, this.server, ( transclusion ) => {
|
|
const parts = transclusion.getParts(),
|
|
spec = parts[ 0 ].getSpec();
|
|
|
|
assert.strictEqual( parts.length, 1 );
|
|
assert.deepEqual( spec.getKnownParameterNames(), [] );
|
|
} );
|
|
} );
|
|
}
|