r113452 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r113451‎ | r113452 | r113453 >
Date:02:19, 9 March 2012
Author:catrope
Status:deferred
Tags:
Comment:
Add test for replacing a table with a list. This only works because
nesting validity isn't checked yet (lists inside lists are illegal
IIRC), but for now it tests the reversal of the order of the closing
tags nicely
Modified paths:
  • /trunk/extensions/VisualEditor/tests/ve/ve.dm.DocumentNode.test.js (modified) (history)
  • /trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js (modified) (history)

Diff [purge]

Index: trunk/extensions/VisualEditor/tests/ve/ve.dm.DocumentNode.test.js
@@ -801,7 +801,7 @@
802802 );
803803 } );
804804
805 -test( 've.dm.DocumentNode.prepareWrap', 5, function() {
 805+test( 've.dm.DocumentNode.prepareWrap', 6, function() {
806806 var documentModel = ve.dm.DocumentNode.newFromPlainObject( veTest.obj );
807807
808808 // Test 1
@@ -838,6 +838,19 @@
839839 );
840840
841841 // Test 3
 842+ deepEqual(
 843+ documentModel.prepareWrap( new ve.Range( 8, 28 ), [ { 'type': 'table' }, { 'type': 'tableRow' }, { 'type': 'tableCell' } ], [ { 'type': 'list' }, { 'type': 'listItem' } ], [], [] ).getOperations(),
 844+ [
 845+ { 'type': 'retain', 'length': 5 },
 846+ { 'type': 'replace', 'remove': [ { 'type': 'table' }, { 'type': 'tableRow' }, { 'type': 'tableCell' } ], 'replacement': [ { 'type': 'list' }, { 'type': 'listItem' } ] },
 847+ { 'type': 'retain', 'length': 20 },
 848+ { 'type': 'replace', 'remove': [ { 'type': '/tableCell' }, { 'type': '/tableRow' }, { 'type': '/table' } ], 'replacement': [ { 'type': '/listItem' }, { 'type': '/list' } ] },
 849+ { 'type': 'retain', 'length': 3 }
 850+ ],
 851+ 'prepareWrap replaces a table with a list'
 852+ );
 853+
 854+ // Test 4
842855 raises(
843856 function() {
844857 documentModel.prepareWrap( new ve.Range( 12, 27 ), [ { 'type': 'table' } ], [], [], [] );
@@ -846,7 +859,7 @@
847860 'prepareWrap checks integrity of unwrapOuter parameter'
848861 );
849862
850 - // Test 4
 863+ // Test 5
851864 raises(
852865 function() {
853866 documentModel.prepareWrap( new ve.Range( 12, 27 ), [ { 'type': 'list' } ], [], [ { 'type': 'paragraph' } ], [] );
@@ -855,7 +868,7 @@
856869 'prepareWrap checks integrity of unwrapEach parameter'
857870 );
858871
859 - // Test 5
 872+ // Test 6
860873 raises(
861874 function() {
862875 documentModel.prepareWrap( new ve.Range( 1, 4 ), [ { 'type': 'listItem' }, { 'type': 'paragraph' } ], [], [], [] );
Index: trunk/extensions/VisualEditor/tests/ve/ve.dm.TransactionProcessor.test.js
@@ -1,6 +1,6 @@
22 module( 've/dm' );
33
4 -test( 've.dm.TransactionProcessor', 37, function() {
 4+test( 've.dm.TransactionProcessor', 39, function() {
55 var documentModel = ve.dm.DocumentNode.newFromPlainObject( veTest.obj );
66
77 // FIXME: These tests shouldn't use prepareFoo() because those functions
@@ -490,4 +490,78 @@
491491 ],
492492 'rollback puts the list back'
493493 );
 494+
 495+ var replaceTable = documentModel.prepareWrap( new ve.Range( 8, 28 ), [ { 'type': 'table' }, { 'type': 'tableRow' }, { 'type': 'tableCell' } ],
 496+ [ { 'type': 'list' }, { 'type': 'listItem' } ], [], [] );
 497+
 498+ // Test 38
 499+ ve.dm.TransactionProcessor.commit( documentModel, replaceTable );
 500+ deepEqual(
 501+ documentModel.getData( new ve.Range( 5, 30 ) ),
 502+ [
 503+ { 'type': 'list' },
 504+ { 'type': 'listItem' },
 505+ { 'type': 'paragraph' },
 506+ 'd',
 507+ { 'type': '/paragraph' },
 508+ { 'type': 'list' },
 509+ { 'type': 'listItem', 'attributes': { 'styles': ['bullet'] } },
 510+ { 'type': 'paragraph' },
 511+ 'e',
 512+ { 'type': '/paragraph' },
 513+ { 'type': '/listItem' },
 514+ { 'type': 'listItem', 'attributes': { 'styles': ['bullet', 'bullet'] } },
 515+ { 'type': 'paragraph' },
 516+ 'f',
 517+ { 'type': '/paragraph' },
 518+ { 'type': '/listItem' },
 519+ { 'type': 'listItem', 'attributes': { 'styles': ['number'] } },
 520+ { 'type': 'paragraph' },
 521+ 'g',
 522+ { 'type': '/paragraph' },
 523+ { 'type': '/listItem' },
 524+ { 'type': '/list' },
 525+ { 'type': '/listItem' },
 526+ { 'type': '/list' },
 527+ { 'type': 'paragraph' }
 528+ ],
 529+ 'replacing a table with the list reverses the order of the closing tags correctly'
 530+ );
 531+
 532+ // Test 39
 533+ ve.dm.TransactionProcessor.rollback( documentModel, replaceTable );
 534+ deepEqual(
 535+ documentModel.getData( new ve.Range( 5, 32 ) ),
 536+ [
 537+ { 'type': 'table' },
 538+ { 'type': 'tableRow' },
 539+ { 'type': 'tableCell' },
 540+ { 'type': 'paragraph' },
 541+ 'd',
 542+ { 'type': '/paragraph' },
 543+ { 'type': 'list' },
 544+ { 'type': 'listItem', 'attributes': { 'styles': ['bullet'] } },
 545+ { 'type': 'paragraph' },
 546+ 'e',
 547+ { 'type': '/paragraph' },
 548+ { 'type': '/listItem' },
 549+ { 'type': 'listItem', 'attributes': { 'styles': ['bullet', 'bullet'] } },
 550+ { 'type': 'paragraph' },
 551+ 'f',
 552+ { 'type': '/paragraph' },
 553+ { 'type': '/listItem' },
 554+ { 'type': 'listItem', 'attributes': { 'styles': ['number'] } },
 555+ { 'type': 'paragraph' },
 556+ 'g',
 557+ { 'type': '/paragraph' },
 558+ { 'type': '/listItem' },
 559+ { 'type': '/list' },
 560+ { 'type': '/tableCell' },
 561+ { 'type': '/tableRow' },
 562+ { 'type': '/table' },
 563+ { 'type': 'paragraph' }
 564+ ],
 565+ 'rollback puts the table back'
 566+ );
 567+
494568 } );

Status & tagging log