Bladeren bron

Added destroy method to Model class.

Oskar Wróbel 8 jaren geleden
bovenliggende
commit
92e6c9b571
2 gewijzigde bestanden met toevoegingen van 30 en 0 verwijderingen
  1. 8 0
      packages/ckeditor5-engine/src/model/model.js
  2. 22 0
      packages/ckeditor5-engine/tests/model/model.js

+ 8 - 0
packages/ckeditor5-engine/src/model/model.js

@@ -87,6 +87,14 @@ export default class Model {
 	applyOperation( operation ) {
 		return operation._execute();
 	}
+
+	/**
+	 * Removes all events listeners set by model instance and destroy Document.
+	 */
+	destroy() {
+		this.document.destroy();
+		this.stopListening();
+	}
 }
 
 mix( Model, ObservableMixin );

+ 22 - 0
packages/ckeditor5-engine/tests/model/model.js

@@ -304,4 +304,26 @@ describe( 'Model', () => {
 			} );
 		} );
 	} );
+
+	describe( 'destroy()', () => {
+		it( 'should destroy document', () => {
+			sinon.spy( model.document, 'destroy' );
+
+			model.destroy();
+
+			sinon.assert.calledOnce( model.document.destroy );
+		} );
+
+		it( 'should stop listening', () => {
+			const spy = sinon.spy();
+
+			model.on( 'event', spy );
+
+			model.destroy();
+
+			model.fire( 'event' );
+
+			sinon.assert.notCalled( spy );
+		} );
+	} );
 } );