/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import '../../../test/common-test-setup-karma';
import './gr-default-editor';
import {GrDefaultEditor} from './gr-default-editor';
import {mockPromise, queryAndAssert} from '../../../test/test-utils';

const basicFixture = fixtureFromElement('gr-default-editor');

suite('gr-default-editor tests', () => {
  let element: GrDefaultEditor;

  setup(async () => {
    element = basicFixture.instantiate();
    element.fileContent = '';
    await flush();
  });

  test('render', () => {
    expect(element).shadowDom.to.equal(/* HTML */ `
      <textarea id="textarea"></textarea>
    `);
  });

  test('fires content-change event', async () => {
    const textarea = queryAndAssert<HTMLTextAreaElement>(element, '#textarea');
    const promise = mockPromise();
    element.addEventListener('content-change', e => {
      assert.equal((e as CustomEvent).detail.value, 'test');
      promise.resolve();
    });
    textarea.value = 'test';
    textarea.dispatchEvent(new Event('input', {bubbles: true, composed: true}));
    await promise;
  });
});
