createdropdownview.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /**
  2. * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import utilsTestUtils from '@ckeditor/ckeditor5-utils/tests/_utils/utils';
  6. import Model from '../../../src/model';
  7. import ButtonView from '../../../src/button/buttonview';
  8. import DropdownView from '../../../src/dropdown/dropdownview';
  9. import DropdownPanelView from '../../../src/dropdown/dropdownpanelview';
  10. import createButtonForDropdown from '../../../src/dropdown/helpers/createbuttonfordropdown';
  11. import createDropdownView from '../../../src/dropdown/helpers/createdropdownview';
  12. const assertBinding = utilsTestUtils.assertBinding;
  13. describe( 'createDropdownView()', () => {
  14. let dropdownView, buttonView, model, locale;
  15. beforeEach( () => {
  16. locale = { t() {} };
  17. model = new Model();
  18. buttonView = createButtonForDropdown( model, locale );
  19. dropdownView = createDropdownView( model, buttonView, locale );
  20. } );
  21. it( 'accepts locale', () => {
  22. expect( dropdownView.locale ).to.equal( locale );
  23. expect( dropdownView.panelView.locale ).to.equal( locale );
  24. } );
  25. it( 'returns view', () => {
  26. model = new Model();
  27. buttonView = new ButtonView();
  28. dropdownView = createDropdownView( model, buttonView, locale );
  29. expect( dropdownView ).to.be.instanceOf( DropdownView );
  30. } );
  31. it( 'creates dropdown#panelView out of DropdownPanelView', () => {
  32. model = new Model();
  33. buttonView = new ButtonView();
  34. dropdownView = createDropdownView( model, buttonView, locale );
  35. expect( dropdownView.panelView ).to.be.instanceOf( DropdownPanelView );
  36. } );
  37. it( 'creates dropdown#buttonView out of buttonView', () => {
  38. model = new Model();
  39. buttonView = new ButtonView();
  40. dropdownView = createDropdownView( model, buttonView, locale );
  41. expect( dropdownView.buttonView ).to.equal( buttonView );
  42. } );
  43. it( 'binds button attributes to the model', () => {
  44. const modelDef = {
  45. label: 'foo',
  46. isOn: false,
  47. isEnabled: true,
  48. withText: false,
  49. tooltip: false
  50. };
  51. model = new Model( modelDef );
  52. buttonView = new ButtonView();
  53. createDropdownView( model, buttonView, locale );
  54. assertBinding( buttonView,
  55. modelDef,
  56. [
  57. [ model, { label: 'bar', isEnabled: false, isOn: true, withText: true, tooltip: true } ]
  58. ],
  59. { label: 'bar', isEnabled: false, isOn: true, withText: true, tooltip: true }
  60. );
  61. } );
  62. it( 'binds button#isOn do dropdown #isOpen and model #isOn', () => {
  63. const modelDef = {
  64. label: 'foo',
  65. isOn: false,
  66. isEnabled: true,
  67. withText: false,
  68. tooltip: false
  69. };
  70. model = new Model( modelDef );
  71. buttonView = new ButtonView();
  72. dropdownView = createDropdownView( model, buttonView, locale );
  73. dropdownView.isOpen = false;
  74. expect( buttonView.isOn ).to.be.false;
  75. model.isOn = true;
  76. expect( buttonView.isOn ).to.be.true;
  77. dropdownView.isOpen = true;
  78. expect( buttonView.isOn ).to.be.true;
  79. model.isOn = false;
  80. expect( buttonView.isOn ).to.be.true;
  81. } );
  82. it( 'binds dropdown#isEnabled to the model', () => {
  83. const modelDef = {
  84. label: 'foo',
  85. isEnabled: true,
  86. withText: false,
  87. tooltip: false
  88. };
  89. model = new Model( modelDef );
  90. buttonView = new ButtonView();
  91. dropdownView = createDropdownView( model, buttonView, locale );
  92. assertBinding( dropdownView,
  93. { isEnabled: true },
  94. [
  95. [ model, { isEnabled: false } ]
  96. ],
  97. { isEnabled: false }
  98. );
  99. } );
  100. } );