// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference path="../../../../test/src/custom_typings/chai.d.ts" />
/* eslint-disable no-undef */
import { ZuiToggle } from '@zywave/zui-toggle';
import { assert } from '@esm-bundle/chai';
import { faceTests } from '../../../../test/src/util/face-tests';

suite('zui-toggle', () => {
  let element: ZuiToggle;

  setup(() => {
    element = document.createElement('zui-toggle') as ZuiToggle;
    element.setAttribute('value', 'on');
    element.setAttribute('tabindex', '0');
    element.setAttribute('role', 'checkbox');

    document.body.appendChild(element);
  });

  teardown(() => {
    document.body.removeChild(element);
  });

  test('initializes as a ZuiToggle', () => {
    assert.instanceOf(element, ZuiToggle);
  });
});

faceTests<ZuiToggle>('zui-toggle', {
  defaultValue: null,
  async postConnectedConfigure(toggle: ZuiToggle) {
    toggle.checked = true;
    await toggle.updateComplete;
  },
  valueAccessor(element) {
    return element.checked ? element.value : null;
  },
});
