mediawiki-extensions-Visual.../modules/ve/test/dm/ve.dm.DocumentSynchronizer.test.js
Trevor Parscal 264b97df7f There's no such thing as ghosts, just sneaky array references
When a document is created, it should take it upon itself to make sure it has a new reference to the data using slice, not place this on the caller. Callers that do not use slice will often find strange and mysterious things going on and not know why. The real reason is that multiple documents sharing a reference to the same data array leads to seriously messed up behavior.

Change-Id: Ic4e25fcd9bf3f41a805003520a8f38e2768f5dbf
2012-08-17 10:37:28 -07:00

33 lines
1.1 KiB
JavaScript

/**
* VisualEditor data model DocumentSynchronizer tests.
*
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
QUnit.module( 've.dm.DocumentSynchronizer' );
/* Tests */
QUnit.test( 'getDocument', 1, function ( assert ) {
var doc = new ve.dm.Document( ve.dm.example.data ),
ds = new ve.dm.DocumentSynchronizer( doc );
assert.strictEqual( ds.getDocument(), doc );
} );
QUnit.test( 'synchronize', 2, function ( assert ) {
var doc = new ve.dm.Document( ve.dm.example.data ),
ds = new ve.dm.DocumentSynchronizer( doc );
// Annotate "a" with bold formatting
doc.data[1] = ['a', { '{"type":"bold"}': { 'type': 'bold' } }];
ds.pushAnnotation( new ve.Range( 1, 2 ) );
doc.getDocumentNode().getChildren()[0].getChildren()[0].on( 'update', function () {
assert.ok( true, 'annotations trigger update events' );
} );
doc.getDocumentNode().getChildren()[0].getChildren()[0].on( 'annotation', function () {
assert.ok( true, 'annotations trigger annotation events' );
} );
ds.synchronize();
} );