/**
 * @license
 * Copyright 2018 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import * as sinon from 'sinon';
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 {assert, fixture, html} 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);
  });
});
