270 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			270 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import * as getters from '~/diffs/store/getters';
 | |
| import state from '~/diffs/store/modules/diff_state';
 | |
| import { PARALLEL_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE } from '~/diffs/constants';
 | |
| import discussion from '../mock_data/diff_discussions';
 | |
| 
 | |
| describe('Diffs Module Getters', () => {
 | |
|   let localState;
 | |
|   let discussionMock;
 | |
|   let discussionMock1;
 | |
| 
 | |
|   const diffFileMock = {
 | |
|     fileHash: '9732849daca6ae818696d9575f5d1207d1a7f8bb',
 | |
|   };
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     localState = state();
 | |
|     discussionMock = Object.assign({}, discussion);
 | |
|     discussionMock.diff_file.file_hash = diffFileMock.fileHash;
 | |
| 
 | |
|     discussionMock1 = Object.assign({}, discussion);
 | |
|     discussionMock1.diff_file.file_hash = diffFileMock.fileHash;
 | |
|   });
 | |
| 
 | |
|   describe('isParallelView', () => {
 | |
|     it('should return true if view set to parallel view', () => {
 | |
|       localState.diffViewType = PARALLEL_DIFF_VIEW_TYPE;
 | |
| 
 | |
|       expect(getters.isParallelView(localState)).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('should return false if view not to parallel view', () => {
 | |
|       localState.diffViewType = INLINE_DIFF_VIEW_TYPE;
 | |
| 
 | |
|       expect(getters.isParallelView(localState)).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('isInlineView', () => {
 | |
|     it('should return true if view set to inline view', () => {
 | |
|       localState.diffViewType = INLINE_DIFF_VIEW_TYPE;
 | |
| 
 | |
|       expect(getters.isInlineView(localState)).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('should return false if view not to inline view', () => {
 | |
|       localState.diffViewType = PARALLEL_DIFF_VIEW_TYPE;
 | |
| 
 | |
|       expect(getters.isInlineView(localState)).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('hasCollapsedFile', () => {
 | |
|     it('returns true when all files are collapsed', () => {
 | |
|       localState.diffFiles = [{ collapsed: true }, { collapsed: true }];
 | |
| 
 | |
|       expect(getters.hasCollapsedFile(localState)).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('returns true when at least one file is collapsed', () => {
 | |
|       localState.diffFiles = [{ collapsed: false }, { collapsed: true }];
 | |
| 
 | |
|       expect(getters.hasCollapsedFile(localState)).toEqual(true);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('commitId', () => {
 | |
|     it('returns commit id when is set', () => {
 | |
|       const commitID = '800f7a91';
 | |
|       localState.commit = {
 | |
|         id: commitID,
 | |
|       };
 | |
| 
 | |
|       expect(getters.commitId(localState)).toEqual(commitID);
 | |
|     });
 | |
| 
 | |
|     it('returns null when no commit is set', () => {
 | |
|       expect(getters.commitId(localState)).toEqual(null);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('diffHasAllExpandedDiscussions', () => {
 | |
|     it('returns true when all discussions are expanded', () => {
 | |
|       expect(
 | |
|         getters.diffHasAllExpandedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock, discussionMock],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('returns false when there are no discussions', () => {
 | |
|       expect(
 | |
|         getters.diffHasAllExpandedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
| 
 | |
|     it('returns false when one discussions is collapsed', () => {
 | |
|       discussionMock1.expanded = false;
 | |
| 
 | |
|       expect(
 | |
|         getters.diffHasAllExpandedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock, discussionMock1],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('diffHasAllCollapsedDiscussions', () => {
 | |
|     it('returns true when all discussions are collapsed', () => {
 | |
|       discussionMock.diff_file.file_hash = diffFileMock.fileHash;
 | |
|       discussionMock.expanded = false;
 | |
| 
 | |
|       expect(
 | |
|         getters.diffHasAllCollapsedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('returns false when there are no discussions', () => {
 | |
|       expect(
 | |
|         getters.diffHasAllCollapsedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
| 
 | |
|     it('returns false when one discussions is expanded', () => {
 | |
|       discussionMock1.expanded = false;
 | |
| 
 | |
|       expect(
 | |
|         getters.diffHasAllCollapsedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock, discussionMock1],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('diffHasExpandedDiscussions', () => {
 | |
|     it('returns true when one of the discussions is expanded', () => {
 | |
|       discussionMock1.expanded = false;
 | |
| 
 | |
|       expect(
 | |
|         getters.diffHasExpandedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock, discussionMock],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('returns false when there are no discussions', () => {
 | |
|       expect(
 | |
|         getters.diffHasExpandedDiscussions(localState, { getDiffFileDiscussions: () => [] })(
 | |
|           diffFileMock,
 | |
|         ),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
| 
 | |
|     it('returns false when no discussion is expanded', () => {
 | |
|       discussionMock.expanded = false;
 | |
|       discussionMock1.expanded = false;
 | |
| 
 | |
|       expect(
 | |
|         getters.diffHasExpandedDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock, discussionMock1],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('diffHasDiscussions', () => {
 | |
|     it('returns true when getDiffFileDiscussions returns discussions', () => {
 | |
|       expect(
 | |
|         getters.diffHasDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [discussionMock],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(true);
 | |
|     });
 | |
| 
 | |
|     it('returns false when getDiffFileDiscussions returns no discussions', () => {
 | |
|       expect(
 | |
|         getters.diffHasDiscussions(localState, {
 | |
|           getDiffFileDiscussions: () => [],
 | |
|         })(diffFileMock),
 | |
|       ).toEqual(false);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('getDiffFileDiscussions', () => {
 | |
|     it('returns an array with discussions when fileHash matches and the discussion belongs to a diff', () => {
 | |
|       discussionMock.diff_file.file_hash = diffFileMock.file_hash;
 | |
| 
 | |
|       expect(
 | |
|         getters.getDiffFileDiscussions(localState, {}, {}, { discussions: [discussionMock] })(
 | |
|           diffFileMock,
 | |
|         ).length,
 | |
|       ).toEqual(1);
 | |
|     });
 | |
| 
 | |
|     it('returns an empty array when no discussions are found in the given diff', () => {
 | |
|       expect(
 | |
|         getters.getDiffFileDiscussions(localState, {}, {}, { discussions: [] })(diffFileMock)
 | |
|           .length,
 | |
|       ).toEqual(0);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('getDiffFileByHash', () => {
 | |
|     it('returns file by hash', () => {
 | |
|       const fileA = {
 | |
|         file_hash: '123',
 | |
|       };
 | |
|       const fileB = {
 | |
|         file_hash: '456',
 | |
|       };
 | |
|       localState.diffFiles = [fileA, fileB];
 | |
| 
 | |
|       expect(getters.getDiffFileByHash(localState)('456')).toEqual(fileB);
 | |
|     });
 | |
| 
 | |
|     it('returns null if no matching file is found', () => {
 | |
|       localState.diffFiles = [];
 | |
| 
 | |
|       expect(getters.getDiffFileByHash(localState)('123')).toBeUndefined();
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('allBlobs', () => {
 | |
|     it('returns an array of blobs', () => {
 | |
|       localState.treeEntries = {
 | |
|         file: {
 | |
|           type: 'blob',
 | |
|           path: 'file',
 | |
|           parentPath: '/',
 | |
|           tree: [],
 | |
|         },
 | |
|         tree: {
 | |
|           type: 'tree',
 | |
|           path: 'tree',
 | |
|           parentPath: '/',
 | |
|           tree: [],
 | |
|         },
 | |
|       };
 | |
| 
 | |
|       expect(getters.allBlobs(localState)).toEqual([
 | |
|         {
 | |
|           isHeader: true,
 | |
|           path: '/',
 | |
|           tree: [
 | |
|             {
 | |
|               parentPath: '/',
 | |
|               path: 'file',
 | |
|               tree: [],
 | |
|               type: 'blob',
 | |
|             },
 | |
|           ],
 | |
|         },
 | |
|       ]);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('diffFilesLength', () => {
 | |
|     it('returns length of diff files', () => {
 | |
|       localState.diffFiles.push('test', 'test 2');
 | |
| 
 | |
|       expect(getters.diffFilesLength(localState)).toBe(2);
 | |
|     });
 | |
|   });
 | |
| });
 |