mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-23 22:13:34 +00:00
Moved es.DocumentModelBranchNode tests to their own file
This commit is contained in:
parent
23e0651e0b
commit
cd18698bbc
|
@ -718,131 +718,3 @@ test( 'es.DocumentModel.commit, es.DocumentModel.rollback', 12, function() {
|
|||
'rollback keeps model tree up to date with removals'
|
||||
);
|
||||
} );
|
||||
|
||||
test( 'es.DocumentDocumentModelNode child operations', 20, function() {
|
||||
// Example data (integers) is used for simplicity of testing
|
||||
var node1 = new es.DocumentModelBranchNode( '1' ),
|
||||
node2 = new es.DocumentModelBranchNode( '2' ),
|
||||
node3 = new es.DocumentModelBranchNode(
|
||||
'3',
|
||||
null,
|
||||
[new es.DocumentModelBranchNode( '3a' )]
|
||||
),
|
||||
node4 = new es.DocumentModelBranchNode(
|
||||
'4',
|
||||
null,
|
||||
[new es.DocumentModelBranchNode( '4a' ), new es.DocumentModelBranchNode( '4b' )]
|
||||
);
|
||||
|
||||
// Event triggering is detected using a callback that increments a counter
|
||||
var updates = 0;
|
||||
node1.on( 'update', function() {
|
||||
updates++;
|
||||
} );
|
||||
var attaches = 0;
|
||||
node2.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
node3.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
node4.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
var detaches = 0;
|
||||
node2.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
node3.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
node4.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
function strictArrayValueEqual( a, b, msg ) {
|
||||
if ( a.length !== b.length ) {
|
||||
ok( false, msg );
|
||||
return;
|
||||
}
|
||||
for ( var i = 0; i < a.length; i++ ) {
|
||||
if ( a[i] !== b[i] ) {
|
||||
ok( false, msg );
|
||||
return;
|
||||
}
|
||||
}
|
||||
ok( true, msg );
|
||||
}
|
||||
|
||||
// Test 1
|
||||
node1.push( node2 );
|
||||
equal( updates, 1, 'push emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node2], 'push appends a node' );
|
||||
|
||||
// Test 2
|
||||
equal( attaches, 1, 'push attaches added node' );
|
||||
|
||||
// Test 3, 4
|
||||
node1.unshift( node3 );
|
||||
equal( updates, 2, 'unshift emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node3, node2], 'unshift prepends a node' );
|
||||
|
||||
// Test 5
|
||||
equal( attaches, 2, 'unshift attaches added node' );
|
||||
|
||||
// Test 6, 7
|
||||
node1.splice( 1, 0, node4 );
|
||||
equal( updates, 3, 'splice emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node3, node4, node2], 'splice inserts nodes' );
|
||||
|
||||
// Test 8
|
||||
equal( attaches, 3, 'splice attaches added nodes' );
|
||||
|
||||
// Test 9
|
||||
node1.reverse();
|
||||
equal( updates, 4, 'reverse emits update events' );
|
||||
|
||||
// Test 10, 11
|
||||
node1.sort( function( a, b ) {
|
||||
return a.getChildren().length < b.getChildren().length ? -1 : 1;
|
||||
} );
|
||||
equal( updates, 5, 'sort emits update events' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node2, node3, node4],
|
||||
'sort reorderes nodes correctly'
|
||||
);
|
||||
|
||||
// Test 12, 13
|
||||
node1.pop();
|
||||
equal( updates, 6, 'pop emits update events' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node2, node3],
|
||||
'pop removes the last child node'
|
||||
);
|
||||
|
||||
// Test 14
|
||||
equal( detaches, 1, 'pop detaches a node' );
|
||||
|
||||
// Test 15, 16
|
||||
node1.shift();
|
||||
equal( updates, 7, 'es.ModelNode emits update events on shift' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node3],
|
||||
'es.ModelNode removes first Node on shift'
|
||||
);
|
||||
|
||||
// Test 17
|
||||
equal( detaches, 2, 'shift detaches a node' );
|
||||
|
||||
// Test 18
|
||||
strictEqual( node3.getParent(), node1, 'getParent returns the correct reference' );
|
||||
|
||||
// Test 19
|
||||
try {
|
||||
var view = node3.createView();
|
||||
} catch ( err ){
|
||||
ok( true, 'createView throws an exception when not overridden' );
|
||||
}
|
||||
} );
|
||||
|
|
129
tests/es/es.DocumentModelBranchNode.test.js
Normal file
129
tests/es/es.DocumentModelBranchNode.test.js
Normal file
|
@ -0,0 +1,129 @@
|
|||
module( 'es/bases' );
|
||||
|
||||
test( 'es.DocumentModelBranchNode', 20, function() {
|
||||
// Example data (integers) is used for simplicity of testing
|
||||
var node1 = new es.DocumentModelBranchNode( '1' ),
|
||||
node2 = new es.DocumentModelBranchNode( '2' ),
|
||||
node3 = new es.DocumentModelBranchNode(
|
||||
'3',
|
||||
null,
|
||||
[new es.DocumentModelBranchNode( '3a' )]
|
||||
),
|
||||
node4 = new es.DocumentModelBranchNode(
|
||||
'4',
|
||||
null,
|
||||
[new es.DocumentModelBranchNode( '4a' ), new es.DocumentModelBranchNode( '4b' )]
|
||||
);
|
||||
|
||||
// Event triggering is detected using a callback that increments a counter
|
||||
var updates = 0;
|
||||
node1.on( 'update', function() {
|
||||
updates++;
|
||||
} );
|
||||
var attaches = 0;
|
||||
node2.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
node3.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
node4.on( 'afterAttach', function() {
|
||||
attaches++;
|
||||
} );
|
||||
var detaches = 0;
|
||||
node2.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
node3.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
node4.on( 'afterDetach', function() {
|
||||
detaches++;
|
||||
} );
|
||||
function strictArrayValueEqual( a, b, msg ) {
|
||||
if ( a.length !== b.length ) {
|
||||
ok( false, msg );
|
||||
return;
|
||||
}
|
||||
for ( var i = 0; i < a.length; i++ ) {
|
||||
if ( a[i] !== b[i] ) {
|
||||
ok( false, msg );
|
||||
return;
|
||||
}
|
||||
}
|
||||
ok( true, msg );
|
||||
}
|
||||
|
||||
// Test 1
|
||||
node1.push( node2 );
|
||||
equal( updates, 1, 'push emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node2], 'push appends a node' );
|
||||
|
||||
// Test 2
|
||||
equal( attaches, 1, 'push attaches added node' );
|
||||
|
||||
// Test 3, 4
|
||||
node1.unshift( node3 );
|
||||
equal( updates, 2, 'unshift emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node3, node2], 'unshift prepends a node' );
|
||||
|
||||
// Test 5
|
||||
equal( attaches, 2, 'unshift attaches added node' );
|
||||
|
||||
// Test 6, 7
|
||||
node1.splice( 1, 0, node4 );
|
||||
equal( updates, 3, 'splice emits update events' );
|
||||
strictArrayValueEqual( node1.getChildren(), [node3, node4, node2], 'splice inserts nodes' );
|
||||
|
||||
// Test 8
|
||||
equal( attaches, 3, 'splice attaches added nodes' );
|
||||
|
||||
// Test 9
|
||||
node1.reverse();
|
||||
equal( updates, 4, 'reverse emits update events' );
|
||||
|
||||
// Test 10, 11
|
||||
node1.sort( function( a, b ) {
|
||||
return a.getChildren().length < b.getChildren().length ? -1 : 1;
|
||||
} );
|
||||
equal( updates, 5, 'sort emits update events' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node2, node3, node4],
|
||||
'sort reorderes nodes correctly'
|
||||
);
|
||||
|
||||
// Test 12, 13
|
||||
node1.pop();
|
||||
equal( updates, 6, 'pop emits update events' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node2, node3],
|
||||
'pop removes the last child node'
|
||||
);
|
||||
|
||||
// Test 14
|
||||
equal( detaches, 1, 'pop detaches a node' );
|
||||
|
||||
// Test 15, 16
|
||||
node1.shift();
|
||||
equal( updates, 7, 'es.ModelNode emits update events on shift' );
|
||||
strictArrayValueEqual(
|
||||
node1.getChildren(),
|
||||
[node3],
|
||||
'es.ModelNode removes first Node on shift'
|
||||
);
|
||||
|
||||
// Test 17
|
||||
equal( detaches, 2, 'shift detaches a node' );
|
||||
|
||||
// Test 18
|
||||
strictEqual( node3.getParent(), node1, 'getParent returns the correct reference' );
|
||||
|
||||
// Test 19
|
||||
try {
|
||||
var view = node3.createView();
|
||||
} catch ( err ){
|
||||
ok( true, 'createView throws an exception when not overridden' );
|
||||
}
|
||||
} );
|
|
@ -41,6 +41,7 @@
|
|||
<script src="es.testData.js"></script>
|
||||
<script src="es.test.js"></script>
|
||||
<script src="es.DocumentNode.test.js"></script>
|
||||
<script src="es.DocumentModelBranchNode.test.js"></script>
|
||||
<script src="es.DocumentModel.test.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue