/**
 * @license
 * Copyright 2018 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import '../../../test/common-test-setup';
import './gr-shell-command';
import {GrShellCommand} from './gr-shell-command';
import {GrCopyClipboard} from '../gr-copy-clipboard/gr-copy-clipboard';
import {queryAndAssert} from '../../../test/test-utils';
import {fixture, html, assert} from '@open-wc/testing';

suite('gr-shell-command tests', () => {
  let element: GrShellCommand;

  setup(async () => {
    element = await fixture(html`<gr-shell-command></gr-shell-command>`);
    element.command = `git fetch http://gerrit@localhost:8080/a/test-project
        refs/changes/05/5/1 && git checkout FETCH_HEAD`;
    await element.updateComplete;
  });

  test('render', async () => {
    element.label = 'label1';
    await element.updateComplete;

    assert.shadowDom.equal(
      element,
      /* HTML */ `
        <label> label1 </label>
        <div class="commandContainer">
          <gr-copy-clipboard buttontitle="" hastooltip=""> </gr-copy-clipboard>
        </div>
      `
    );
  });

  test('focusOnCopy', async () => {
    const focusStub = sinon.stub(
      queryAndAssert<GrCopyClipboard>(element, 'gr-copy-clipboard')!,
      'focusOnCopy'
    );
    await element.focusOnCopy();
    assert.isTrue(focusStub.called);
  });
});
