mediawiki-extensions-Visual.../modules/ve/test/dm/ve.dm.Converter.test.js
Ed Sanders 5b168bdbad Fix MWImageNode dimensions and implement toDomElements
Using element.height was returning 0 if the attribute was empty
when in fact what we mean to store is null (i.e. auto height).

This takes care of the writing of attributes in CE as jQuery
ignores an attribute-set command if the value is null.

Also in this commit I've implemented a basic toDomElements
that outputs the original HTML (code copied from AlienNode).
This stops the code from throwing an exception but will
eventually need to be rewritten to rebuild the HTML from
the attributes stored in the DM.

Bug: 56336
Change-Id: I297a1d0a07e9ebf9d0110fb1cdf266f8415f25b7
2013-03-29 12:51:43 +00:00

75 lines
1.9 KiB
JavaScript

/*!
* VisualEditor DataModel Converter tests.
*
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
QUnit.module( 've.dm.Converter' );
/* Tests */
// TODO rewrite to test getDataElementOrAnnotationFromDomElement
/*
QUnit.test( 'getDataElementFromDomElement', 20, 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( 'getDomElementsFromDataElement', 20, function ( assert ) {
var msg, conversion;
for ( msg in ve.dm.example.conversions ) {
conversion = ve.dm.example.conversions[msg];
assert.equalDomElement(
ve.dm.converter.getDomElementsFromDataElement( conversion.dataElement )[0],
conversion.domElement,
msg
);
}
} );
QUnit.test( 'getDataFromDom', 50, function ( assert ) {
var msg,
cases = ve.dm.example.domToDataCases;
// TODO: this is a hack to make normal heading/preformatted
// nodes the most recently registered, instead of the MW versions
ve.dm.modelRegistry.register( ve.dm.HeadingNode );
ve.dm.modelRegistry.register( ve.dm.PreformattedNode );
for ( msg in cases ) {
if ( cases[msg].html !== null ) {
ve.dm.example.preprocessAnnotations( cases[msg].data );
assert.deepEqual(
ve.dm.converter.getDataFromDom( ve.createDocumentFromHTML( cases[msg].html ) ),
cases[msg].data,
msg
);
}
}
} );
QUnit.test( 'getDomFromData', 54, function ( assert ) {
var msg,
cases = ve.dm.example.domToDataCases;
for ( msg in cases ) {
ve.dm.example.preprocessAnnotations( cases[msg].data );
assert.equalDomElement(
ve.dm.converter.getDomFromData( cases[msg].data ),
ve.createDocumentFromHTML( cases[msg].normalizedHtml || cases[msg].html ),
msg
);
}
} );