瀏覽代碼

Added filterNames option to Observer.observe. Fixes #38.

Piotrek Koszuliński 9 年之前
父節點
當前提交
115b50ea3a
共有 2 個文件被更改,包括 17 次插入2 次删除
  1. 12 0
      packages/ckeditor5-utils/tests/_utils-tests/utils.js
  2. 5 2
      packages/ckeditor5-utils/tests/_utils/utils.js

+ 12 - 0
packages/ckeditor5-utils/tests/_utils-tests/utils.js

@@ -51,6 +51,18 @@ describe( 'utilsTestUtils.createObserver()', () => {
 			expect( spy.callCount ).to.equal( 3 );
 		} );
 
+		it( 'logs changes to specified properties', () => {
+			const spy = testUtils.sinon.stub( console, 'log' );
+
+			observer.observe( 'Some observable', observable, [ 'foo' ] );
+
+			observable.foo = 1;
+			expect( spy.callCount ).to.equal( 1 );
+
+			observable2.bar = 1;
+			expect( spy.callCount ).to.equal( 1 );
+		} );
+
 		it( 'stops listening when asked to do so', () => {
 			const spy = testUtils.sinon.stub( console, 'log' );
 

+ 5 - 2
packages/ckeditor5-utils/tests/_utils/utils.js

@@ -19,6 +19,7 @@ const utils = {
 	 * * `{String} observableName` – Identifier for the observable object. E.g. `"Editable"` when
 	 * you observe one of editor's editables. This name will be displayed on the console.
 	 * * `{utils.Observable observable} – The object to observe.
+	 * * `{Array.<String>} filterNames` – Array of propery names to be observed.
 	 *
 	 * Typical usage:
 	 *
@@ -33,9 +34,11 @@ const utils = {
 	createObserver() {
 		const observer = Object.create( EmitterMixin, {
 			observe: {
-				value: function observe( observableName, observable ) {
+				value: function observe( observableName, observable, filterNames ) {
 					observer.listenTo( observable, 'change', ( evt, propertyName, value, oldValue ) => {
-						console.log( `[Change in ${ observableName }] ${ propertyName } = '${ value }' (was '${ oldValue }')` );
+						if ( !filterNames || filterNames.includes( propertyName ) ) {
+							console.log( `[Change in ${ observableName }] ${ propertyName } = '${ value }' (was '${ oldValue }')` );
+						}
 					} );
 
 					return observer;