|
|
@@ -156,5 +156,152 @@ describe( 'Model', () => {
|
|
|
} );
|
|
|
}
|
|
|
} );
|
|
|
+
|
|
|
+ it( 'should be possible to nest enqueueChanges in enqueueChanges event', () => {
|
|
|
+ model.once( 'change', () => {
|
|
|
+ model.enqueueChange( () => {
|
|
|
+ changes += 'C';
|
|
|
+ } );
|
|
|
+
|
|
|
+ changes += 'B';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.on( 'changesDone', () => {
|
|
|
+ changes += 'D';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.enqueueChange( () => {
|
|
|
+ changes += 'A';
|
|
|
+ } );
|
|
|
+
|
|
|
+ expect( changes ).to.equal( 'ABCD' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should be possible to nest enqueueChanges in changes event', () => {
|
|
|
+ model.once( 'change', () => {
|
|
|
+ model.enqueueChange( () => {
|
|
|
+ changes += 'C';
|
|
|
+ } );
|
|
|
+
|
|
|
+ changes += 'B';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.on( 'changesDone', () => {
|
|
|
+ changes += 'D';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'A';
|
|
|
+ } );
|
|
|
+
|
|
|
+ expect( changes ).to.equal( 'ABCD' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should be possible to nest changes in enqueueChanges event', () => {
|
|
|
+ model.once( 'change', () => {
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'B';
|
|
|
+ } );
|
|
|
+
|
|
|
+ changes += 'C';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.on( 'changesDone', () => {
|
|
|
+ changes += 'D';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.enqueueChange( () => {
|
|
|
+ changes += 'A';
|
|
|
+ } );
|
|
|
+
|
|
|
+ expect( changes ).to.equal( 'ABCD' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should be possible to nest changes in changes event', () => {
|
|
|
+ model.once( 'change', () => {
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'B';
|
|
|
+ } );
|
|
|
+
|
|
|
+ changes += 'C';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.on( 'changesDone', () => {
|
|
|
+ changes += 'D';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'A';
|
|
|
+ } );
|
|
|
+
|
|
|
+ expect( changes ).to.equal( 'ABCD' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should let mix blocks', () => {
|
|
|
+ model.once( 'change', () => {
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'B';
|
|
|
+
|
|
|
+ nestedEnqueue();
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'C';
|
|
|
+ } );
|
|
|
+
|
|
|
+ changes += 'D';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.on( 'changesDone', () => {
|
|
|
+ changes += 'F';
|
|
|
+ } );
|
|
|
+
|
|
|
+ model.change( () => {
|
|
|
+ changes += 'A';
|
|
|
+ } );
|
|
|
+
|
|
|
+ expect( changes ).to.equal( 'ABCDEF' );
|
|
|
+
|
|
|
+ function nestedEnqueue() {
|
|
|
+ model.enqueueChange( () => {
|
|
|
+ changes += 'E';
|
|
|
+ } );
|
|
|
+ }
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should use the same writer in all change blocks (change & change)', () => {
|
|
|
+ model.change( outerWriter => {
|
|
|
+ model.change( innerWriter => {
|
|
|
+ expect( innerWriter ).to.equal( outerWriter );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should create new writer in enqueue block', () => {
|
|
|
+ model.change( outerWriter => {
|
|
|
+ model.enqueueChange( innerWriter => {
|
|
|
+ expect( innerWriter ).to.not.equal( outerWriter );
|
|
|
+ expect( innerWriter.batch ).to.not.equal( outerWriter.batch );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should let you pass batch', () => {
|
|
|
+ let outerBatch;
|
|
|
+
|
|
|
+ model.change( outerWriter => {
|
|
|
+ outerBatch = outerWriter.batch;
|
|
|
+
|
|
|
+ model.enqueueChange( outerBatch, innerWriter => {
|
|
|
+ expect( innerWriter.batch ).to.equal( outerBatch );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should let you create transparent batch', () => {
|
|
|
+ model.enqueueChange( 'transparent', writer => {
|
|
|
+ expect( writer.batch.type ).to.equal( 'transparent' );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
} );
|
|
|
} );
|