mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-01 17:36:35 +00:00
63e6702c52
This makes things like == Foo == * Bar render without the leading and trailing spaces, while still round-tripping those spaces. * Added a .fringeWhitespace property to the linear model and ve.dm.Node ** Object containing innerPre, innerPost, outerPre, outerPost ** Only inner* are used right now, outer* are planned for future use ** Like .attributes , it's suppressed if it's an empty object * In getDataFromDom(): ** Store the stripped whitespace in .fringeWhitespace ** Move emptiness check up: empty elements with .fringeWhitespace have to be preserved ** Move paragraph wrapping up: .fringeWhitespace has to be applied to the generated paragraph, not its parent ** Add wrapperElement to keep track of the element .fringeWhitespace has to be added to; this is either dataElement or the generated paragraph or nothing, but we can't modify dataElement because it's used later * In getDomFromData(): ** When processing an opening, store the fringeWhitespace data in the generated DOM node ** When processing a closing, add the stored whitespace back in * In the ve.dm.Document constructor, pass through .fringeWhitespace from the linear model data to the generated nodes Tests: * Change one existing test case to account for this change * Add three new test cases for this behavior * Add normalizedHtml field so I can test behavior with bare content Change-Id: I0411544652dd72b923c831c495d69ee4322a2c14
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
/**
|
|
* VisualEditor data model Converter tests.
|
|
*
|
|
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
QUnit.module( 've.dm.Converter' );
|
|
|
|
/* Tests */
|
|
|
|
QUnit.test( 'getDataElementFromDomElement', function ( assert ) {
|
|
var msg, conversion;
|
|
for ( msg in ve.dm.example.conversions ) {
|
|
conversion = ve.dm.example.conversions[msg];
|
|
assert.deepEqual(
|
|
ve.dm.converter.getDataElementFromDomElement( conversion.domElement ),
|
|
conversion.dataElement,
|
|
msg
|
|
);
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'getDomElementFromDataElement', function ( assert ) {
|
|
var msg, conversion;
|
|
for ( msg in ve.dm.example.conversions ) {
|
|
conversion = ve.dm.example.conversions[msg];
|
|
assert.equalDomElement(
|
|
ve.dm.converter.getDomElementFromDataElement( conversion.dataElement ),
|
|
conversion.domElement,
|
|
msg
|
|
);
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'getDataFromDom', function ( assert ) {
|
|
var msg,
|
|
cases = ve.dm.example.domToDataCases;
|
|
for ( msg in cases ) {
|
|
assert.deepEqual(
|
|
ve.dm.converter.getDataFromDom( $( '<div>' ).html( cases[msg].html )[0] ),
|
|
cases[msg].data,
|
|
msg
|
|
);
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'getDomFromData', function ( assert ) {
|
|
var msg,
|
|
cases = ve.dm.example.domToDataCases;
|
|
for ( msg in cases ) {
|
|
assert.equalDomElement(
|
|
ve.dm.converter.getDomFromData( cases[msg].data ),
|
|
$( '<div>' ).html( cases[msg].normalizedHtml || cases[msg].html )[0],
|
|
msg
|
|
);
|
|
}
|
|
} );
|