8
0

dropdownview.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import DropdownView from '../../src/dropdown/dropdownview';
  6. import ButtonView from '../../src/button/buttonview';
  7. import DropdownPanelView from '../../src/dropdown/dropdownpanelview';
  8. describe( 'DropdownView', () => {
  9. let view, buttonView, panelView, locale;
  10. beforeEach( () => {
  11. locale = { t() {} };
  12. buttonView = new ButtonView( locale );
  13. panelView = new DropdownPanelView( locale );
  14. return ( view = new DropdownView( locale, buttonView, panelView ) ).init();
  15. } );
  16. describe( 'constructor()', () => {
  17. it( 'sets view#locale', () => {
  18. expect( view.locale ).to.equal( locale );
  19. } );
  20. it( 'sets view#buttonView', () => {
  21. expect( view.buttonView ).to.equal( buttonView );
  22. } );
  23. it( 'sets view#panelView', () => {
  24. expect( view.panelView ).to.equal( panelView );
  25. } );
  26. it( 'sets view#isOpen false', () => {
  27. expect( view.isOpen ).to.be.false;
  28. } );
  29. it( 'creates #element from template', () => {
  30. expect( view.element.classList.contains( 'ck-dropdown' ) ).to.be.true;
  31. expect( view.element.firstChild ).to.equal( buttonView.element );
  32. expect( view.element.lastChild ).to.equal( panelView.element );
  33. } );
  34. it( 'sets view#buttonView class', () => {
  35. expect( view.buttonView.element.classList.contains( 'ck-dropdown__button' ) ).to.be.true;
  36. } );
  37. describe( 'bindings', () => {
  38. describe( 'view#isOpen to view.buttonView#execute', () => {
  39. it( 'is activated', () => {
  40. const values = [];
  41. view.on( 'change:isOpen', () => {
  42. values.push( view.isOpen );
  43. } );
  44. view.buttonView.fire( 'execute' );
  45. view.buttonView.fire( 'execute' );
  46. view.buttonView.fire( 'execute' );
  47. expect( values ).to.have.members( [ true, false, true ] );
  48. } );
  49. } );
  50. describe( 'view.panelView#isVisible to view#isOpen', () => {
  51. it( 'is activated', () => {
  52. const values = [];
  53. view.listenTo( view.panelView, 'change:isVisible', () => {
  54. values.push( view.isOpen );
  55. } );
  56. view.isOpen = true;
  57. view.isOpen = false;
  58. view.isOpen = true;
  59. expect( values ).to.have.members( [ true, false, true ] );
  60. } );
  61. } );
  62. } );
  63. } );
  64. } );