%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/tests/ce/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/tests/ce/ve.ce.RangeState.test.js |
/*!
* VisualEditor ContentEditable Document tests.
*
* @copyright 2011-2016 VisualEditor Team and others; see http://ve.mit-license.org
*/
QUnit.module( 've.ce.RangeState' );
/* Tests */
QUnit.test( 'Basic tests', function ( assert ) {
var i, rangeState, nativeRange,
oldState = null,
view = ve.test.utils.createSurfaceViewFromHtml( ve.dm.example.html ),
nativeSelection = view.nativeSelection,
doc = view.getDocument().getDocumentNode(),
cases = [
{
msg: 'From null to null state',
resetOld: true,
range: null,
expected: {
branchNodeChanged: false,
contentChanged: false,
hash: null,
node: null,
selectionChanged: false,
text: null,
veRange: null
}
},
{
msg: 'From null to inside heading',
resetOld: true,
range: {
startNode: doc.children[ 0 ].$element[ 0 ],
startOffset: 1
},
expected: {
branchNodeChanged: true,
contentChanged: false,
hash: '<H1>#<B>#</B><I>#</I></H1>',
node: doc.children[ 0 ],
selectionChanged: true,
text: 'abc',
veRange: new ve.Range( 2 )
}
},
{
msg: 'From heading to paragraph',
range: {
startNode: doc.children[ 4 ].$element[ 0 ],
startOffset: 0,
endNode: doc.children[ 4 ].$element[ 0 ],
endOffset: 1
},
expected: {
branchNodeChanged: true,
contentChanged: false,
hash: '<P>#</P>',
node: doc.children[ 4 ],
selectionChanged: true,
text: 'l',
veRange: new ve.Range( 56, 57 )
}
},
{
msg: 'Selection changing anchor node only',
range: {
startNode: doc.children[ 4 ].$element[ 0 ],
startOffset: 1,
endNode: doc.children[ 4 ].$element[ 0 ],
endOffset: 1
},
expected: {
branchNodeChanged: false,
contentChanged: false,
hash: '<P>#</P>',
node: doc.children[ 4 ],
selectionChanged: true,
text: 'l',
veRange: new ve.Range( 57, 57 )
}
},
{
msg: 'From paragraph back to null state',
expected: {
branchNodeChanged: true,
contentChanged: false,
hash: null,
node: null,
selectionChanged: true,
text: null,
veRange: null
}
},
{
msg: 'From null state to null state',
expected: {
branchNodeChanged: false,
contentChanged: false,
hash: null,
node: null,
selectionChanged: false,
text: null,
veRange: null
}
}
];
function getSummary( state ) {
return {
branchNodeChanged: state.branchNodeChanged,
selectionChanged: state.selectionChanged,
contentChanged: state.contentChanged,
veRange: state.veRange,
node: state.node,
text: state.text,
hash: state.hash
};
}
QUnit.expect( cases.length );
for ( i = 0; i < cases.length; i++ ) {
nativeSelection.removeAllRanges();
if ( cases[ i ].range ) {
nativeRange = document.createRange();
nativeRange.setStart( cases[ i ].range.startNode, cases[ i ].range.startOffset );
if ( cases[ i ].range.endNode ) {
nativeRange.setEnd( cases[ i ].range.endNode, cases[ i ].range.endOffset );
}
nativeSelection.addRange( nativeRange );
}
if ( cases[ i ].resetOld ) {
oldState = null;
}
rangeState = new ve.ce.RangeState( oldState, doc );
assert.deepEqual( getSummary( rangeState ), cases[ i ].expected, cases[ i ].msg );
oldState = rangeState;
}
view.destroy();
} );