// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference path="../../../../test/src/custom_typings/chai.d.ts" />
/* eslint-disable no-undef */
import { ZuiExpander, ZuiExpanderGroup } from '@zywave/zui-expander';
import { assert } from '@esm-bundle/chai';

suite('zui-expander', () => {
  let expander: ZuiExpander;
  let group: ZuiExpanderGroup;

  setup(() => {
    expander = document.createElement('zui-expander') as ZuiExpander;
    expander.setAttribute('type', 'group-standard');

    group = document.createElement('zui-expander-group') as ZuiExpanderGroup;
    group.setAttribute('type', 'group-standard');
    group.appendChild(expander);

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

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

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

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

  test('ZuiExpander type attribute is reflected when property is set', async () => {
    const element = document.createElement('zui-expander');
    element.type = 'group-standard';
    group.append(element);
    await element.updateComplete;

    assert.isTrue(expander.matches('[type="group-standard"]'));

    element.remove();
  });
});
