import { shallowMount } from '@vue/test-utils';
import { GlPopover } from '@gitlab/ui';
import NodeErrorHelpText from '~/clusters_list/components/node_error_help_text.vue';

describe('NodeErrorHelpText', () => {
  let wrapper;

  const createWrapper = propsData => {
    wrapper = shallowMount(NodeErrorHelpText, { propsData, stubs: { GlPopover } });
    return wrapper.vm.$nextTick();
  };

  const findPopover = () => wrapper.find(GlPopover);

  afterEach(() => {
    wrapper.destroy();
  });

  it.each`
    errorType                 | wrapperText                 | popoverText
    ${'authentication_error'} | ${'Unable to Authenticate'} | ${'GitLab failed to authenticate'}
    ${'connection_error'}     | ${'Unable to Connect'}      | ${'GitLab failed to connect to the cluster'}
    ${'http_error'}           | ${'Unable to Connect'}      | ${'There was an HTTP error when connecting to your cluster'}
    ${'default'}              | ${'Unknown Error'}          | ${'An unknown error occurred while attempting to connect to Kubernetes.'}
    ${'unknown_error_type'}   | ${'Unknown Error'}          | ${'An unknown error occurred while attempting to connect to Kubernetes.'}
    ${null}                   | ${'Unknown Error'}          | ${'An unknown error occurred while attempting to connect to Kubernetes.'}
  `('displays error text', ({ errorType, wrapperText, popoverText }) => {
    return createWrapper({ errorType, popoverId: 'id' }).then(() => {
      expect(wrapper.text()).toContain(wrapperText);
      expect(findPopover().text()).toContain(popoverText);
    });
  });
});
