https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113690

Revision: 113690
Author:   catrope
Date:     2012-03-13 00:14:38 +0000 (Tue, 13 Mar 2012)
Log Message:
-----------
Add tests for list split tree sync

Modified Paths:
--------------
    trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js

Modified: 
trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js
===================================================================
--- trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js   
2012-03-13 00:05:43 UTC (rev 113689)
+++ trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js   
2012-03-13 00:14:38 UTC (rev 113690)
@@ -1,6 +1,6 @@
 module( 've/dm' );
 
-test( 've.dm.TransactionProcessor', 39, function() {
+test( 've.dm.TransactionProcessor', 47, function() {
        var documentModel = ve.dm.DocumentNode.newFromPlainObject( veTest.obj );
 
        // FIXME: These tests shouldn't use prepareFoo() because those functions
@@ -366,6 +366,55 @@
        );
        
        // Test 31
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children.length, 3,
+               'commit keeps model tree up to date with list split (number of 
children)'
+       );
+       
+       // Test 32
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[1].getElementType(), 
'list',
+               'commit keeps model tree up to date with list split (first list 
type)'
+       );
+       
+       // Test 33
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[2].getElementType(), 
'list',
+               'commit keeps model tree up to date with list split (second 
list type)'
+       );
+       
+       // Test 34
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[1].getContentData(),
+               [
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['bullet'] } },
+                       { 'type': 'paragraph' },
+                       'e',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' }
+               ],
+               'commit keeps model tree up to date with list split (first list 
content)'
+       );
+       
+       // Test 35
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[2].getContentData(),
+               [
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['bullet', 'bullet'] } },
+                       { 'type': 'paragraph' },
+                       'f',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' },
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['number'] } },
+                       { 'type': 'paragraph' },
+                       'g',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' }
+               ],
+               'commit keeps model tree up to date with list split (second 
list content)'
+       );
+       
+       // Test 36
        ve.dm.TransactionProcessor.rollback( documentModel, listSplit );
        deepEqual(
                documentModel.getData( new ve.Range( 15, 19 ) ),
@@ -378,10 +427,45 @@
                'rollback reverses list split'
        );
        
+       // Test 37
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children.length, 2,
+               'rollback keeps model tree up to date with list split (number 
of children)'
+       );
        
+       // Test 38
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[1].getElementType(), 
'list',
+               'rollback keeps model tree up to date with list split (first 
list type)'
+       );
+       
+       // Test 39
+       deepEqual(
+               
documentModel.children[1].children[0].children[0].children[1].getContentData(),
+               [
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['bullet'] } },
+                       { 'type': 'paragraph' },
+                       'e',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' },
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['bullet', 'bullet'] } },
+                       { 'type': 'paragraph' },
+                       'f',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' },
+                       { 'type': 'listItem', 'attributes': { 'styles': 
['number'] } },
+                       { 'type': 'paragraph' },
+                       'g',
+                       { 'type': '/paragraph' },
+                       { 'type': '/listItem' }
+               ],
+               'rollback keeps model tree up to date with list split (first 
list content)'
+       );
+       
+       
        var contentReplacement = documentModel.prepareContentReplacement( new 
ve.Range( 32, 33 ), [ 'i', 'j', 'k' ] );
        
-       // Test 32
+       // Test 40
        ve.dm.TransactionProcessor.commit( documentModel, contentReplacement );
        deepEqual(
                documentModel.getData( new ve.Range( 31, 36 ) ),
@@ -393,7 +477,7 @@
                'replacement replaces content'
        );
        
-       // Test 33
+       // Test 41
        ve.dm.TransactionProcessor.rollback( documentModel, contentReplacement 
);
        deepEqual(
                documentModel.getData( new ve.Range( 31, 34 ) ),
@@ -407,7 +491,7 @@
        
        var paragraphToHeading = documentModel.prepareWrap( new ve.Range( 1, 4 
), [ { 'type': 'paragraph' } ], [ { 'type': 'heading', 'level': 2 } ], [], [] );
        
-       // Test 34
+       // Test 42
        ve.dm.TransactionProcessor.commit( documentModel, paragraphToHeading );
        deepEqual(
                documentModel.getData( new ve.Range( 0, 5 ) ),
@@ -421,7 +505,7 @@
                'changing paragraph to heading'
        );
        
-       // Test 35
+       // Test 43
        ve.dm.TransactionProcessor.rollback( documentModel, paragraphToHeading 
);
        deepEqual(
                documentModel.getData( new ve.Range( 0, 5 ) ),
@@ -437,7 +521,7 @@
        
        var unwrapList = documentModel.prepareWrap( new ve.Range( 12, 27 ), [ { 
'type': 'list' } ], [] , [ { 'type': 'listItem' } ], [] );
        
-       // Test 36
+       // Test 44
        ve.dm.TransactionProcessor.commit( documentModel, unwrapList );
        deepEqual(
                documentModel.getData( new ve.Range( 7, 21 ) ),
@@ -460,7 +544,7 @@
                'unwrapping the list produces a cell with four adjacent 
paragraphs'
        );
        
-       // Test 37
+       // Test 45
        ve.dm.TransactionProcessor.rollback( documentModel, unwrapList );
        deepEqual(
                documentModel.getData( new ve.Range( 7, 29 ) ),
@@ -494,7 +578,7 @@
        var replaceTable = documentModel.prepareWrap( new ve.Range( 8, 28 ), [ 
{ 'type': 'table' }, { 'type': 'tableRow' }, { 'type': 'tableCell' } ],
                [ { 'type': 'list' }, { 'type': 'listItem' } ], [], [] );
        
-       // Test 38
+       // Test 46
        ve.dm.TransactionProcessor.commit( documentModel, replaceTable );
        deepEqual(
                documentModel.getData( new ve.Range( 5, 30 ) ),
@@ -528,7 +612,7 @@
                'replacing a table with the list reverses the order of the 
closing tags correctly'
        );
        
-       // Test 39
+       // Test 47
        ve.dm.TransactionProcessor.rollback( documentModel, replaceTable );
        deepEqual(
                documentModel.getData( new ve.Range( 5, 32 ) ),


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to