From 2742cc87f9eeb2e2415ab523639467a1e59eb3ce Mon Sep 17 00:00:00 2001 From: Szymon Cofalik Date: Tue, 17 Sep 2024 13:04:37 +0200 Subject: [PATCH] Add missing unit tests. --- .../tests/model/operation/transform/undo.js | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/packages/ckeditor5-engine/tests/model/operation/transform/undo.js b/packages/ckeditor5-engine/tests/model/operation/transform/undo.js index 231ce177ac3..03cb76ecccb 100644 --- a/packages/ckeditor5-engine/tests/model/operation/transform/undo.js +++ b/packages/ckeditor5-engine/tests/model/operation/transform/undo.js @@ -829,6 +829,68 @@ describe( 'transform', () => { return kate.destroy(); } ); + // https://github.com/cksource/ckeditor5-commercial/issues/4341 + it( 'split, type, remove on another client, undo, redo', async () => { + const kate = await Client.get( 'kate' ); + + kate.setData( 'Abc[]XyzFooBar' ); + john.setData( 'Abc[]XyzFooBar' ); + + kate._processExecute( 'enter' ); + kate._processExecute( 'insertText', { text: 'X' } ); + + syncClients(); + expectClients( 'AbcXXyzFooBar' ); + + john.setSelection( [ 0, 0 ], [ 3, 3 ] ); + john._processExecute( 'delete' ); + + syncClients(); + expectClients( 'Bar' ); + + kate.undo(); + kate.undo(); + + syncClients(); + expectClients( 'Bar' ); + + kate.redo(); + kate.redo(); + + syncClients(); + expectClients( 'Bar' ); + + return kate.destroy(); + } ); + + // https://github.com/cksource/ckeditor5-commercial/issues/1939 + it( 'two intersecting removes through multiple elements, then undo', async () => { + const kate = await Client.get( 'kate' ); + + kate.setData( 'ABC[ABCABC]ABC' ); + john.setData( '[ABCABCABCABC]' ); + + john._processExecute( 'delete' ); + kate._processExecute( 'delete' ); + + syncClients(); + expectClients( '' ); + + john.undo(); + + syncClients(); + + // Actually, the *really* expected data is one paragraph less because `kate` removes it: + // + // ABCABC + // + // But during OT the merge operation becomes no operation at one point. + // + expectClients( 'ABCABC' ); + + return kate.destroy(); + } ); + // https://github.com/ckeditor/ckeditor5/issues/9296 it( 'multiple enters, then backspaces, then undo, redo', () => { john.setData( 'AB[]CD' );