buttonview.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* bender-tags: ui, button */
  6. 'use strict';
  7. import ButtonView from '/ckeditor5/core/ui/button/buttonview.js';
  8. import Model from '/ckeditor5/core/ui/model.js';
  9. describe( 'ButtonView', () => {
  10. let model, view;
  11. beforeEach( () => {
  12. model = new Model( {
  13. label: 'foo',
  14. isEnabled: true,
  15. isOn: false
  16. } );
  17. view = new ButtonView( model );
  18. return view.init();
  19. } );
  20. describe( '<button> bindings', () => {
  21. describe( 'class', () => {
  22. it( 'is set initially', () => {
  23. expect( view.element.classList.contains( 'ck-button' ) ).to.be.true( 'ck-button' );
  24. expect( view.element.classList.contains( 'ck-enabled' ) ).to.be.true( 'ck-enabled' );
  25. expect( view.element.classList.contains( 'ck-off' ) ).to.be.true( 'ck-off' );
  26. } );
  27. it( 'reacts on model.isEnabled', () => {
  28. model.isEnabled = false;
  29. expect( view.element.classList.contains( 'ck-disabled' ) ).to.be.true( 'ck-disabled' );
  30. } );
  31. it( 'reacts on model.isOn', () => {
  32. model.isOn = true;
  33. expect( view.element.classList.contains( 'ck-on' ) ).to.be.true( 'ck-on' );
  34. } );
  35. } );
  36. describe( 'text', () => {
  37. it( 'is set initially', () => {
  38. expect( view.element.textContent ).to.equal( 'foo' );
  39. } );
  40. it( 'reacts on model.label', () => {
  41. model.label = 'bar';
  42. expect( view.element.textContent ).to.equal( 'bar' );
  43. } );
  44. } );
  45. describe( 'mousedown event', () => {
  46. it( 'should be prevented', () => {
  47. const ret = view.element.dispatchEvent( new Event( 'mousedown', { cancelable: true } ) );
  48. expect( ret ).to.be.false;
  49. } );
  50. } );
  51. describe( 'click event', () => {
  52. it( 'triggers click event if button is not disabled', () => {
  53. const spy = sinon.spy();
  54. view.on( 'click', spy );
  55. view.element.dispatchEvent( new Event( 'click' ) );
  56. expect( spy.callCount ).to.equal( 1 );
  57. model.isEnabled = false;
  58. view.element.dispatchEvent( new Event( 'click' ) );
  59. expect( spy.callCount ).to.equal( 1 );
  60. } );
  61. } );
  62. } );
  63. } );