mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-24 12:03:01 +00:00
d127dc48b7
Make ve.dm.MWTemplateModel#serialize ignore empty parameters if they were not present in the transclusion before the edit. This avoids dirty diffs where an user edits a template transclusion via VisualEditor, and the editor adds all available template parameters to the edit wikitext, even if they were not changed during the edit. This logic was ported from the old Wikia-WMF VisualEditor project.[1] Additionally, add tests for ve.dm.MWTemplateModel serialization. --- [1] https://github.com/Wikia/app/pull/6450/commits/858eaa9 Bug: T101075 Change-Id: I35f8812724658904d30034db4e4684193a661c1e
83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
/*!
|
|
* VisualEditor DataModel MWTemplateModel tests.
|
|
*
|
|
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
( function () {
|
|
var transclusionData = {
|
|
params: {
|
|
foo: { wt: 'Foo value' },
|
|
bar: { wt: 'Bar value' },
|
|
empty: { wt: '' }
|
|
},
|
|
target: {
|
|
href: './Template:Test',
|
|
wt: 'Test'
|
|
}
|
|
};
|
|
|
|
QUnit.module( 've.dm.MWTemplateModel', ve.test.utils.mwEnvironment );
|
|
|
|
/**
|
|
* Create a new MWTemplateModel initialized with a static transclusion data fixture.
|
|
*
|
|
* @return {ve.dm.MWTemplateModel}
|
|
*/
|
|
function newTemplateModel() {
|
|
var doc = ve.dm.Document.static.newBlankDocument(),
|
|
transclusion = new ve.dm.MWTransclusionModel( doc ),
|
|
clonedTransclusionData = ve.extendObject( {}, transclusionData );
|
|
|
|
return ve.dm.MWTemplateModel.newFromData( transclusion, clonedTransclusionData );
|
|
}
|
|
|
|
/* Tests */
|
|
|
|
QUnit.test( 'serialize input parameters', function ( assert ) {
|
|
var templateModel = newTemplateModel(),
|
|
serializedTransclusionData = templateModel.serialize();
|
|
|
|
assert.deepEqual( serializedTransclusionData, { template: transclusionData } );
|
|
} );
|
|
|
|
QUnit.test( 'serialize changed input parameters', function ( assert ) {
|
|
var templateModel = newTemplateModel(),
|
|
newParameterModel = new ve.dm.MWParameterModel( templateModel, 'baz', 'Baz value' ),
|
|
serializedTransclusionData;
|
|
|
|
templateModel.addParameter( newParameterModel );
|
|
|
|
serializedTransclusionData = templateModel.serialize();
|
|
|
|
assert.deepEqual( serializedTransclusionData.template.params.baz, { wt: 'Baz value' } );
|
|
} );
|
|
|
|
// T75134
|
|
QUnit.test( 'serialize after parameter was removed', function ( assert ) {
|
|
var templateModel = newTemplateModel(),
|
|
barParam = templateModel.getParameter( 'bar' ),
|
|
serializedTransclusionData;
|
|
|
|
templateModel.removeParameter( barParam );
|
|
|
|
serializedTransclusionData = templateModel.serialize();
|
|
|
|
assert.deepEqual( serializedTransclusionData.template.params, { foo: { wt: 'Foo value' }, empty: { wt: '' } } );
|
|
} );
|
|
|
|
// T101075
|
|
QUnit.test( 'serialize without empty parameter not present in original parameter set', function ( assert ) {
|
|
var templateModel = newTemplateModel(),
|
|
newEmptyParam = new ve.dm.MWParameterModel( templateModel, 'new_empty', '' ),
|
|
serializedTransclusionData;
|
|
|
|
templateModel.addParameter( newEmptyParam );
|
|
|
|
serializedTransclusionData = templateModel.serialize();
|
|
|
|
assert.deepEqual( serializedTransclusionData, { template: transclusionData } );
|
|
} );
|
|
}() );
|