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();
 | |
|         });
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| });
 |