chromium/chrome/test/data/webui/extensions/toggle_row_test.ts

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'chrome://extensions/extensions.js';

import type {ExtensionsToggleRowElement} from 'chrome://extensions/extensions.js';
import {getTrustedHTML} from 'chrome://extensions/extensions.js';
import {assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {eventToPromise} from 'chrome://webui-test/test_util.js';

suite('extensions-toggle-row', function() {
  let row: ExtensionsToggleRowElement;

  setup(function() {
    document.body.innerHTML = getTrustedHTML`
      <extensions-toggle-row id="row">
        <span id="label">Description</span>
      </extensions-toggle-row>
    `;

    row = document.querySelector('extensions-toggle-row')!;
    assertFalse(row.checked);
  });


  // Test that the control is toggled when the user taps on the text label.
  test('TestToggleByLabelTap', function() {
    let whenChanged = eventToPromise('change', row);
    row.getLabel().click();
    return whenChanged
        .then(function() {
          assertTrue(row.checked);
          whenChanged = eventToPromise('change', row);
          row.getLabel().click();
          return whenChanged;
        })
        .then(function() {
          assertFalse(row.checked);
        });
  });
});