import { module, test } from 'qunit';
import { setupRenderingTest } from 'vault/tests/helpers';
import { click, render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
const SELECTORS = {
  dropdown: '[data-test-copy-menu-trigger]',
  copyButton: '[data-test-copy-button]',
  clipboard: 'data-clipboard-text',
  wrapButton: '[data-test-wrap-button]',
  masked: '[data-test-masked-input]',
};
module('Integration | Component | copy-secret-dropdown', function (hooks) {
  setupRenderingTest(hooks);
  hooks.beforeEach(function () {
    this.onWrap = () => {};
    this.onClose = () => {};
  });
  test('it renders and fires callback functions', async function (assert) {
    assert.expect(5);
    this.data = `{ foo: 'bar' }`;
    this.onWrap = () => assert.ok(true, 'onWrap callback fires Wrap secret is clicked');
    this.onClose = () => assert.ok(true, 'onClose callback fires when dropdown closes');
    await render(
      hbs`
  
`
    );
    await click(SELECTORS.dropdown);
    assert.dom(SELECTORS.copyButton).hasText('Copy JSON');
    assert.dom(SELECTORS.wrapButton).hasText('Wrap secret');
    assert
      .dom(SELECTORS.copyButton)
      .hasAttribute('data-clipboard-text', `${this.data}`, 'it renders copyable data');
    await click(SELECTORS.wrapButton);
    await click(SELECTORS.dropdown);
  });
  test('it renders loading wrap button', async function (assert) {
    assert.expect(2);
    await render(
      hbs`
  
`
    );
    await click(SELECTORS.dropdown);
    assert.dom(SELECTORS.wrapButton).hasClass('is-loading');
    assert.dom(SELECTORS.wrapButton).isDisabled();
  });
  test('it wrapped data', async function (assert) {
    assert.expect(1);
    this.wrappedData = 'my-token';
    await render(
      hbs`
  
`
    );
    await click(SELECTORS.dropdown);
    assert
      .dom(`${SELECTORS.masked} ${SELECTORS.copyButton}`)
      .hasAttribute('data-clipboard-text', this.wrappedData, 'it renders wrapped data');
  });
});