UNPKG

chrome-devtools-frontend

Version:
55 lines (45 loc) 1.84 kB
// Copyright 2024 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import {renderElementIntoDOM} from '../../../testing/DOMHelpers.js'; import * as Switch from './switch.js'; describe('Switch', () => { it('should checked property reflect the current value for whether the Switch is checked or not', () => { const component = new Switch.Switch.Switch(); component.checked = false; renderElementIntoDOM(component); const checkbox = component.shadowRoot?.querySelector('input')!; assert.isFalse(checkbox.checked); component.checked = true; assert.isTrue(checkbox.checked); }); it('should emit SwitchChangeEvent whenever the checkbox inside is changed', async () => { const component = new Switch.Switch.Switch(); const eventPromise = new Promise<Switch.Switch.SwitchChangeEvent>(resolve => { component.addEventListener(Switch.Switch.SwitchChangeEvent.eventName, ev => { resolve(ev); }); }); renderElementIntoDOM(component); const checkbox = component.shadowRoot?.querySelector('input')!; checkbox.checked = false; checkbox.click(); const event = await eventPromise; assert.isTrue(event.checked); }); it('emits only 1 click event when clicked', async () => { const component = new Switch.Switch.Switch(); let clickEventCount = 0; const eventPromise = new Promise<MouseEvent>(resolve => { component.addEventListener('click', ev => { clickEventCount++; resolve(ev); }); }); renderElementIntoDOM(component); const slider = component.shadowRoot?.querySelector('span.slider') as HTMLSpanElement; slider.click(); await eventPromise; assert.strictEqual(clickEventCount, 1); }); });