utils.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. import testUtils from '/tests/_utils/utils.js';
  7. import utilsTestUtils from '/tests/utils/_utils/utils.js';
  8. import ObesrvableMixin from '/ckeditor5/utils/observablemixin.js';
  9. import EmitterMixin from '/ckeditor5/utils/emittermixin.js';
  10. testUtils.createSinonSandbox();
  11. describe( 'utilsTestUtils.createObserver()', () => {
  12. let observable, observable2, observer;
  13. beforeEach( () => {
  14. observer = utilsTestUtils.createObserver();
  15. observable = Object.create( ObesrvableMixin );
  16. observable.set( { foo: 0, bar: 0 } );
  17. observable2 = Object.create( ObesrvableMixin );
  18. observable2.set( { foo: 0, bar: 0 } );
  19. } );
  20. it( 'should create an observer', () => {
  21. function Emitter() {}
  22. Emitter.prototype = EmitterMixin;
  23. expect( observer ).to.be.instanceof( Emitter );
  24. expect( observer.observe ).is.a( 'function' );
  25. expect( observer.stopListening ).is.a( 'function' );
  26. } );
  27. describe( 'Observer', () => {
  28. /* global console:false */
  29. it( 'logs changes in the observable', () => {
  30. const spy = testUtils.sinon.stub( console, 'log' );
  31. observer.observe( 'Some observable', observable );
  32. observer.observe( 'Some observable 2', observable2 );
  33. observable.foo = 1;
  34. expect( spy.callCount ).to.equal( 1 );
  35. observable.foo = 2;
  36. observable2.bar = 3;
  37. expect( spy.callCount ).to.equal( 3 );
  38. } );
  39. it( 'stops listening when asked to do so', () => {
  40. const spy = testUtils.sinon.stub( console, 'log' );
  41. observer.observe( 'Some observable', observable );
  42. observable.foo = 1;
  43. expect( spy.callCount ).to.equal( 1 );
  44. observer.stopListening();
  45. observable.foo = 2;
  46. expect( spy.callCount ).to.equal( 1 );
  47. } );
  48. } );
  49. } );