142 lines
3.7 KiB
JavaScript
142 lines
3.7 KiB
JavaScript
|
import { mount, createLocalVue } from '@vue/test-utils';
|
||
|
|
||
|
import createStore from '~/notes/stores';
|
||
|
import diffDiscussionHeader from '~/notes/components/diff_discussion_header.vue';
|
||
|
|
||
|
import { discussionMock } from '../../../javascripts/notes/mock_data';
|
||
|
import mockDiffFile from '../../diffs/mock_data/diff_discussions';
|
||
|
|
||
|
const discussionWithTwoUnresolvedNotes = 'merge_requests/resolved_diff_discussion.json';
|
||
|
|
||
|
describe('diff_discussion_header component', () => {
|
||
|
let store;
|
||
|
let wrapper;
|
||
|
|
||
|
preloadFixtures(discussionWithTwoUnresolvedNotes);
|
||
|
|
||
|
beforeEach(() => {
|
||
|
window.mrTabs = {};
|
||
|
store = createStore();
|
||
|
|
||
|
const localVue = createLocalVue();
|
||
|
wrapper = mount(diffDiscussionHeader, {
|
||
|
store,
|
||
|
propsData: { discussion: discussionMock },
|
||
|
localVue,
|
||
|
sync: false,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
afterEach(() => {
|
||
|
wrapper.destroy();
|
||
|
});
|
||
|
|
||
|
it('should render user avatar', () => {
|
||
|
const discussion = { ...discussionMock };
|
||
|
discussion.diff_file = mockDiffFile;
|
||
|
discussion.diff_discussion = true;
|
||
|
|
||
|
wrapper.setProps({ discussion });
|
||
|
|
||
|
expect(wrapper.find('.user-avatar-link').exists()).toBe(true);
|
||
|
});
|
||
|
|
||
|
describe('action text', () => {
|
||
|
const commitId = 'razupaltuff';
|
||
|
const truncatedCommitId = commitId.substr(0, 8);
|
||
|
let commitElement;
|
||
|
|
||
|
beforeEach(done => {
|
||
|
store.state.diffs = {
|
||
|
projectPath: 'something',
|
||
|
};
|
||
|
|
||
|
wrapper.setProps({
|
||
|
discussion: {
|
||
|
...discussionMock,
|
||
|
for_commit: true,
|
||
|
commit_id: commitId,
|
||
|
diff_discussion: true,
|
||
|
diff_file: {
|
||
|
...mockDiffFile,
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
|
||
|
wrapper.vm
|
||
|
.$nextTick()
|
||
|
.then(() => {
|
||
|
commitElement = wrapper.find('.commit-sha');
|
||
|
})
|
||
|
.then(done)
|
||
|
.catch(done.fail);
|
||
|
});
|
||
|
|
||
|
describe('for diff threads without a commit id', () => {
|
||
|
it('should show started a thread on the diff text', done => {
|
||
|
Object.assign(wrapper.vm.discussion, {
|
||
|
for_commit: false,
|
||
|
commit_id: null,
|
||
|
});
|
||
|
|
||
|
wrapper.vm.$nextTick(() => {
|
||
|
expect(wrapper.text()).toContain('started a thread on the diff');
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should show thread on older version text', done => {
|
||
|
Object.assign(wrapper.vm.discussion, {
|
||
|
for_commit: false,
|
||
|
commit_id: null,
|
||
|
active: false,
|
||
|
});
|
||
|
|
||
|
wrapper.vm.$nextTick(() => {
|
||
|
expect(wrapper.text()).toContain('started a thread on an old version of the diff');
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('for commit threads', () => {
|
||
|
it('should display a monospace started a thread on commit', () => {
|
||
|
expect(wrapper.text()).toContain(`started a thread on commit ${truncatedCommitId}`);
|
||
|
expect(commitElement.exists()).toBe(true);
|
||
|
expect(commitElement.text()).toContain(truncatedCommitId);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('for diff thread with a commit id', () => {
|
||
|
it('should display started thread on commit header', done => {
|
||
|
wrapper.vm.discussion.for_commit = false;
|
||
|
|
||
|
wrapper.vm.$nextTick(() => {
|
||
|
expect(wrapper.text()).toContain(`started a thread on commit ${truncatedCommitId}`);
|
||
|
|
||
|
expect(commitElement).not.toBe(null);
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should display outdated change on commit header', done => {
|
||
|
wrapper.vm.discussion.for_commit = false;
|
||
|
wrapper.vm.discussion.active = false;
|
||
|
|
||
|
wrapper.vm.$nextTick(() => {
|
||
|
expect(wrapper.text()).toContain(
|
||
|
`started a thread on an outdated change in commit ${truncatedCommitId}`,
|
||
|
);
|
||
|
|
||
|
expect(commitElement).not.toBe(null);
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|