chromium/third_party/google-closure-library/closure/goog/ui/popupcolorpicker_test.js

/**
 * @license
 * Copyright The Closure Library Authors.
 * SPDX-License-Identifier: Apache-2.0
 */

goog.module('goog.ui.PopupColorPickerTest');
goog.setTestOnly();

const ColorPicker = goog.require('goog.ui.ColorPicker');
const PopupColorPicker = goog.require('goog.ui.PopupColorPicker');
const dom = goog.require('goog.dom');
const events = goog.require('goog.events');
const testSuite = goog.require('goog.testing.testSuite');
const testingEvents = goog.require('goog.testing.events');

// Unittest to ensure that the popup gets created in createDom().

// Unittest to ensure the popup opens with a custom color picker.

testSuite({
  testPopupCreation() {
    const picker = new PopupColorPicker();
    picker.createDom();
    assertNotNull(picker.getPopup());
  },

  testAutoHideIsSetProperly() {
    const picker = new PopupColorPicker();
    picker.createDom();
    picker.setAutoHide(true);
    const containingDiv = dom.getElement('containingDiv');
    picker.setAutoHideRegion(containingDiv);
    assertTrue(picker.getAutoHide());
    assertEquals(containingDiv, picker.getAutoHideRegion());
  },

  testCustomColorPicker() {
    const button1 = document.getElementById('button1');
    const domHelper = dom.getDomHelper();
    const colorPicker = new ColorPicker();
    colorPicker.setColors(['#ffffff', '#000000']);
    const picker = new PopupColorPicker(domHelper, colorPicker);
    picker.render();
    picker.attach(button1);
    assertNotNull(picker.getColorPicker());
    assertNotNull(picker.getPopup().getElement());
    assertNull(picker.getSelectedColor());

    let changeEvents = 0;
    events.listen(picker, ColorPicker.EventType.CHANGE, (e) => {
      changeEvents++;
    });

    // Select the first color.
    testingEvents.fireClickSequence(button1);
    testingEvents.fireClickSequence(
        document.getElementById('goog-palette-cell-0').firstChild);
    assertEquals('#ffffff', picker.getSelectedColor());
    assertEquals(1, changeEvents);
  },
});