@@ -10,7 +10,6 @@ import MoveOperation from '../../../src/model/operation/moveoperation';
1010import Position from '../../../src/model/position' ;
1111import Text from '../../../src/model/text' ;
1212import Element from '../../../src/model/element' ;
13- import Delta from '../../../src/model/delta/delta' ;
1413import { jsonParseStringify , wrapInDelta } from '../../../tests/model/_utils/utils' ;
1514
1615describe ( 'RemoveOperation' , ( ) => {
@@ -52,7 +51,7 @@ describe( 'RemoveOperation', () => {
5251 expect ( operation ) . to . be . instanceof ( MoveOperation ) ;
5352 } ) ;
5453
55- it ( 'should remove set of nodes and append them to holder element in graveyard root' , ( ) => {
54+ it ( 'should be able to remove set of nodes and append them to holder element in graveyard root' , ( ) => {
5655 root . insertChildren ( 0 , new Text ( 'fozbar' ) ) ;
5756
5857 doc . applyOperation ( wrapInDelta (
@@ -71,64 +70,24 @@ describe( 'RemoveOperation', () => {
7170 expect ( graveyard . getChild ( 0 ) . getChild ( 0 ) . data ) . to . equal ( 'zb' ) ;
7271 } ) ;
7372
74- it ( 'should create new holder element for remove operations in different deltas ' , ( ) => {
73+ it ( 'should be able to remove set of nodes and append them to existing element in graveyard root ' , ( ) => {
7574 root . insertChildren ( 0 , new Text ( 'fozbar' ) ) ;
75+ graveyard . appendChildren ( new Element ( '$graveyardHolder' ) ) ;
7676
77- doc . applyOperation ( wrapInDelta (
78- new RemoveOperation (
79- new Position ( root , [ 0 ] ) ,
80- 1 ,
81- doc . version
82- )
83- ) ) ;
84-
85- doc . applyOperation ( wrapInDelta (
86- new RemoveOperation (
87- new Position ( root , [ 0 ] ) ,
88- 1 ,
89- doc . version
90- )
91- ) ) ;
92-
93- doc . applyOperation ( wrapInDelta (
94- new RemoveOperation (
95- new Position ( root , [ 0 ] ) ,
96- 1 ,
97- doc . version
98- )
99- ) ) ;
100-
101- expect ( graveyard . maxOffset ) . to . equal ( 3 ) ;
102- expect ( graveyard . getChild ( 0 ) . getChild ( 0 ) . data ) . to . equal ( 'f' ) ;
103- expect ( graveyard . getChild ( 1 ) . getChild ( 0 ) . data ) . to . equal ( 'o' ) ;
104- expect ( graveyard . getChild ( 2 ) . getChild ( 0 ) . data ) . to . equal ( 'z' ) ;
105- } ) ;
106-
107- it ( 'should not create new holder element for remove operation if it was already created for given delta' , ( ) => {
108- root . insertChildren ( 0 , new Text ( 'fozbar' ) ) ;
109-
110- let delta = new Delta ( ) ;
111-
112- // This simulates i.e. RemoveOperation that got split into two operations during OT.
113- let removeOpA = new RemoveOperation (
114- new Position ( root , [ 1 ] ) ,
115- 1 ,
116- doc . version
117- ) ;
118- let removeOpB = new RemoveOperation (
77+ const op = new RemoveOperation (
11978 new Position ( root , [ 0 ] ) ,
12079 1 ,
121- doc . version + 1
80+ doc . version
12281 ) ;
12382
124- delta . addOperation ( removeOpA ) ;
125- delta . addOperation ( removeOpB ) ;
83+ // Manually set holder element properties.
84+ op . _needsHolderElement = false ;
85+ op . _holderElementOffset = 0 ;
12686
127- doc . applyOperation ( removeOpA ) ;
128- doc . applyOperation ( removeOpB ) ;
87+ doc . applyOperation ( wrapInDelta ( op ) ) ;
12988
130- expect ( graveyard . childCount ) . to . equal ( 1 ) ;
131- expect ( graveyard . getChild ( 0 ) . getChild ( 0 ) . data ) . to . equal ( 'fo ' ) ;
89+ expect ( graveyard . maxOffset ) . to . equal ( 1 ) ;
90+ expect ( graveyard . getChild ( 0 ) . getChild ( 0 ) . data ) . to . equal ( 'f ' ) ;
13291 } ) ;
13392
13493 it ( 'should create RemoveOperation with same parameters when cloned' , ( ) => {
@@ -197,6 +156,8 @@ describe( 'RemoveOperation', () => {
197156 doc . version
198157 ) ;
199158
159+ op . _needsHolderElement = false ;
160+
200161 const serialized = jsonParseStringify ( op ) ;
201162
202163 expect ( serialized ) . to . deep . equal ( {
@@ -205,7 +166,8 @@ describe( 'RemoveOperation', () => {
205166 howMany : 2 ,
206167 isSticky : false ,
207168 sourcePosition : jsonParseStringify ( op . sourcePosition ) ,
208- targetPosition : jsonParseStringify ( op . targetPosition )
169+ targetPosition : jsonParseStringify ( op . targetPosition ) ,
170+ _needsHolderElement : false
209171 } ) ;
210172 } ) ;
211173 } ) ;
@@ -218,6 +180,8 @@ describe( 'RemoveOperation', () => {
218180 doc . version
219181 ) ;
220182
183+ op . _needsHolderElement = false ;
184+
221185 doc . graveyard . appendChildren ( [ new Element ( '$graveyardHolder' ) , new Element ( '$graveyardHolder' ) ] ) ;
222186
223187 const serialized = jsonParseStringify ( op ) ;
0 commit comments