import { shallowMount } from '@vue/test-utils';
import DiffCommentCell from '~/diffs/components/diff_comment_cell.vue';
import DiffDiscussions from '~/diffs/components/diff_discussions.vue';
import DiffDiscussionReply from '~/diffs/components/diff_discussion_reply.vue';

describe('DiffCommentCell', () => {
  const createWrapper = (props = {}) => {
    const { renderDiscussion, ...otherProps } = props;
    const line = {
      discussions: [],
      renderDiscussion,
    };
    const diffFileHash = 'abc';

    return shallowMount(DiffCommentCell, {
      propsData: { line, diffFileHash, ...otherProps },
    });
  };

  it('renders discussions if line has discussions', () => {
    const wrapper = createWrapper({ renderDiscussion: true });

    expect(wrapper.find(DiffDiscussions).exists()).toBe(true);
  });

  it('does not render discussions if line has no discussions', () => {
    const wrapper = createWrapper();

    expect(wrapper.find(DiffDiscussions).exists()).toBe(false);
  });

  it('renders discussion reply if line has no draft', () => {
    const wrapper = createWrapper();

    expect(wrapper.find(DiffDiscussionReply).exists()).toBe(true);
  });

  it('does not render discussion reply if line has draft', () => {
    const wrapper = createWrapper({ hasDraft: true });

    expect(wrapper.find(DiffDiscussionReply).exists()).toBe(false);
  });
});
