utils.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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.getIteratorCount()', () => {
  12. it( 'should returns number of editable items', () => {
  13. const count = utilsTestUtils.getIteratorCount( [ 1, 2, 3, 4, 5 ] );
  14. expect( count ).to.equal( 5 );
  15. } );
  16. } );
  17. describe( 'utilsTestUtils.createObserver()', () => {
  18. let observable, observable2, observer;
  19. beforeEach( () => {
  20. observer = utilsTestUtils.createObserver();
  21. observable = Object.create( ObesrvableMixin );
  22. observable.set( { foo: 0, bar: 0 } );
  23. observable2 = Object.create( ObesrvableMixin );
  24. observable2.set( { foo: 0, bar: 0 } );
  25. } );
  26. it( 'should create an observer', () => {
  27. function Emitter() {}
  28. Emitter.prototype = EmitterMixin;
  29. expect( observer ).to.be.instanceof( Emitter );
  30. expect( observer.observe ).is.a( 'function' );
  31. expect( observer.stopListening ).is.a( 'function' );
  32. } );
  33. describe( 'Observer', () => {
  34. /* global console:false */
  35. it( 'logs changes in the observable', () => {
  36. const spy = testUtils.sinon.stub( console, 'log' );
  37. observer.observe( 'Some observable', observable );
  38. observer.observe( 'Some observable 2', observable2 );
  39. observable.foo = 1;
  40. expect( spy.callCount ).to.equal( 1 );
  41. observable.foo = 2;
  42. observable2.bar = 3;
  43. expect( spy.callCount ).to.equal( 3 );
  44. } );
  45. it( 'stops listening when asked to do so', () => {
  46. const spy = testUtils.sinon.stub( console, 'log' );
  47. observer.observe( 'Some observable', observable );
  48. observable.foo = 1;
  49. expect( spy.callCount ).to.equal( 1 );
  50. observer.stopListening();
  51. observable.foo = 2;
  52. expect( spy.callCount ).to.equal( 1 );
  53. } );
  54. } );
  55. } );