Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/diffs/store/utils_spec.js')
-rw-r--r--spec/javascripts/diffs/store/utils_spec.js950
1 files changed, 0 insertions, 950 deletions
diff --git a/spec/javascripts/diffs/store/utils_spec.js b/spec/javascripts/diffs/store/utils_spec.js
deleted file mode 100644
index 223c4d7e40b..00000000000
--- a/spec/javascripts/diffs/store/utils_spec.js
+++ /dev/null
@@ -1,950 +0,0 @@
-import { clone } from 'lodash';
-import * as utils from '~/diffs/store/utils';
-import {
- LINE_POSITION_LEFT,
- LINE_POSITION_RIGHT,
- TEXT_DIFF_POSITION_TYPE,
- LEGACY_DIFF_NOTE_TYPE,
- DIFF_NOTE_TYPE,
- NEW_LINE_TYPE,
- OLD_LINE_TYPE,
- MATCH_LINE_TYPE,
- INLINE_DIFF_VIEW_TYPE,
- PARALLEL_DIFF_VIEW_TYPE,
-} from '~/diffs/constants';
-import { MERGE_REQUEST_NOTEABLE_TYPE } from '~/notes/constants';
-import diffFileMockData from '../mock_data/diff_file';
-import { noteableDataMock } from '../../notes/mock_data';
-
-const getDiffFileMock = () => JSON.parse(JSON.stringify(diffFileMockData));
-
-describe('DiffsStoreUtils', () => {
- describe('findDiffFile', () => {
- const files = [{ file_hash: 1, name: 'one' }];
-
- it('should return correct file', () => {
- expect(utils.findDiffFile(files, 1).name).toEqual('one');
- expect(utils.findDiffFile(files, 2)).toBeUndefined();
- });
- });
-
- describe('getReversePosition', () => {
- it('should return correct line position name', () => {
- expect(utils.getReversePosition(LINE_POSITION_RIGHT)).toEqual(LINE_POSITION_LEFT);
- expect(utils.getReversePosition(LINE_POSITION_LEFT)).toEqual(LINE_POSITION_RIGHT);
- });
- });
-
- describe('findIndexInInlineLines and findIndexInParallelLines', () => {
- const expectSet = (method, lines, invalidLines) => {
- expect(method(lines, { oldLineNumber: 3, newLineNumber: 5 })).toEqual(4);
- expect(method(invalidLines || lines, { oldLineNumber: 32, newLineNumber: 53 })).toEqual(-1);
- };
-
- describe('findIndexInInlineLines', () => {
- it('should return correct index for given line numbers', () => {
- expectSet(utils.findIndexInInlineLines, getDiffFileMock().highlighted_diff_lines);
- });
- });
-
- describe('findIndexInParallelLines', () => {
- it('should return correct index for given line numbers', () => {
- expectSet(utils.findIndexInParallelLines, getDiffFileMock().parallel_diff_lines, []);
- });
- });
- });
-
- describe('getPreviousLineIndex', () => {
- [
- { diffViewType: INLINE_DIFF_VIEW_TYPE, file: { parallel_diff_lines: [] } },
- { diffViewType: PARALLEL_DIFF_VIEW_TYPE, file: { highlighted_diff_lines: [] } },
- ].forEach(({ diffViewType, file }) => {
- describe(`with diffViewType (${diffViewType}) in split diffs`, () => {
- let diffFile;
-
- beforeEach(() => {
- diffFile = { ...clone(diffFileMockData), ...file };
- });
-
- it('should return the correct previous line number', () => {
- const emptyLines =
- diffViewType === INLINE_DIFF_VIEW_TYPE
- ? diffFile.parallel_diff_lines
- : diffFile.highlighted_diff_lines;
-
- // This expectation asserts that we cannot possibly be using the opposite view type lines in the next expectation
- expect(emptyLines.length).toBe(0);
- expect(
- utils.getPreviousLineIndex(diffViewType, diffFile, {
- oldLineNumber: 3,
- newLineNumber: 5,
- }),
- ).toBe(4);
- });
- });
- });
- });
-
- describe('removeMatchLine', () => {
- it('should remove match line properly by regarding the bottom parameter', () => {
- const diffFile = getDiffFileMock();
- const lineNumbers = { oldLineNumber: 3, newLineNumber: 5 };
- const inlineIndex = utils.findIndexInInlineLines(
- diffFile.highlighted_diff_lines,
- lineNumbers,
- );
- const parallelIndex = utils.findIndexInParallelLines(
- diffFile.parallel_diff_lines,
- lineNumbers,
- );
- const atInlineIndex = diffFile.highlighted_diff_lines[inlineIndex];
- const atParallelIndex = diffFile.parallel_diff_lines[parallelIndex];
-
- utils.removeMatchLine(diffFile, lineNumbers, false);
-
- expect(diffFile.highlighted_diff_lines[inlineIndex]).not.toEqual(atInlineIndex);
- expect(diffFile.parallel_diff_lines[parallelIndex]).not.toEqual(atParallelIndex);
-
- utils.removeMatchLine(diffFile, lineNumbers, true);
-
- expect(diffFile.highlighted_diff_lines[inlineIndex + 1]).not.toEqual(atInlineIndex);
- expect(diffFile.parallel_diff_lines[parallelIndex + 1]).not.toEqual(atParallelIndex);
- });
- });
-
- describe('addContextLines', () => {
- [INLINE_DIFF_VIEW_TYPE, PARALLEL_DIFF_VIEW_TYPE].forEach(diffViewType => {
- it(`should add context lines for ${diffViewType}`, () => {
- const diffFile = getDiffFileMock();
- const inlineLines = diffFile.highlighted_diff_lines;
- const parallelLines = diffFile.parallel_diff_lines;
- const lineNumbers = { oldLineNumber: 3, newLineNumber: 5 };
- const contextLines = [{ lineNumber: 42, line_code: '123' }];
- const options = { inlineLines, parallelLines, contextLines, lineNumbers, diffViewType };
- const inlineIndex = utils.findIndexInInlineLines(inlineLines, lineNumbers);
- const parallelIndex = utils.findIndexInParallelLines(parallelLines, lineNumbers);
- const normalizedParallelLine = {
- left: options.contextLines[0],
- right: options.contextLines[0],
- line_code: '123',
- };
-
- utils.addContextLines(options);
-
- if (diffViewType === INLINE_DIFF_VIEW_TYPE) {
- expect(inlineLines[inlineIndex]).toEqual(contextLines[0]);
- } else {
- expect(parallelLines[parallelIndex]).toEqual(normalizedParallelLine);
- }
- });
-
- it(`should add context lines properly with bottom parameter for ${diffViewType}`, () => {
- const diffFile = getDiffFileMock();
- const inlineLines = diffFile.highlighted_diff_lines;
- const parallelLines = diffFile.parallel_diff_lines;
- const lineNumbers = { oldLineNumber: 3, newLineNumber: 5 };
- const contextLines = [{ lineNumber: 42, line_code: '123' }];
- const options = {
- inlineLines,
- parallelLines,
- contextLines,
- lineNumbers,
- bottom: true,
- diffViewType,
- };
- const normalizedParallelLine = {
- left: options.contextLines[0],
- right: options.contextLines[0],
- line_code: '123',
- };
-
- utils.addContextLines(options);
-
- if (diffViewType === INLINE_DIFF_VIEW_TYPE) {
- expect(inlineLines[inlineLines.length - 1]).toEqual(contextLines[0]);
- } else {
- expect(parallelLines[parallelLines.length - 1]).toEqual(normalizedParallelLine);
- }
- });
- });
- });
-
- describe('getNoteFormData', () => {
- it('should properly create note form data', () => {
- const diffFile = getDiffFileMock();
- noteableDataMock.targetType = MERGE_REQUEST_NOTEABLE_TYPE;
-
- const options = {
- note: 'Hello world!',
- noteableData: noteableDataMock,
- noteableType: MERGE_REQUEST_NOTEABLE_TYPE,
- diffFile,
- noteTargetLine: {
- line_code: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_3',
- meta_data: null,
- new_line: 3,
- old_line: 1,
- },
- diffViewType: PARALLEL_DIFF_VIEW_TYPE,
- linePosition: LINE_POSITION_LEFT,
- };
-
- const position = JSON.stringify({
- base_sha: diffFile.diff_refs.base_sha,
- start_sha: diffFile.diff_refs.start_sha,
- head_sha: diffFile.diff_refs.head_sha,
- old_path: diffFile.old_path,
- new_path: diffFile.new_path,
- position_type: TEXT_DIFF_POSITION_TYPE,
- old_line: options.noteTargetLine.old_line,
- new_line: options.noteTargetLine.new_line,
- });
-
- const postData = {
- view: options.diffViewType,
- line_type: options.linePosition === LINE_POSITION_RIGHT ? NEW_LINE_TYPE : OLD_LINE_TYPE,
- merge_request_diff_head_sha: diffFile.diff_refs.head_sha,
- in_reply_to_discussion_id: '',
- note_project_id: '',
- target_type: options.noteableType,
- target_id: options.noteableData.id,
- return_discussion: true,
- note: {
- noteable_type: options.noteableType,
- noteable_id: options.noteableData.id,
- commit_id: undefined,
- type: DIFF_NOTE_TYPE,
- line_code: options.noteTargetLine.line_code,
- note: options.note,
- position,
- },
- };
-
- expect(utils.getNoteFormData(options)).toEqual({
- endpoint: options.noteableData.create_note_path,
- data: postData,
- });
- });
-
- it('should create legacy note form data', () => {
- const diffFile = getDiffFileMock();
- delete diffFile.diff_refs.start_sha;
- delete diffFile.diff_refs.head_sha;
-
- noteableDataMock.targetType = MERGE_REQUEST_NOTEABLE_TYPE;
-
- const options = {
- note: 'Hello world!',
- noteableData: noteableDataMock,
- noteableType: MERGE_REQUEST_NOTEABLE_TYPE,
- diffFile,
- noteTargetLine: {
- line_code: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_3',
- meta_data: null,
- new_line: 3,
- old_line: 1,
- },
- diffViewType: PARALLEL_DIFF_VIEW_TYPE,
- linePosition: LINE_POSITION_LEFT,
- };
-
- const position = JSON.stringify({
- base_sha: diffFile.diff_refs.base_sha,
- start_sha: undefined,
- head_sha: undefined,
- old_path: diffFile.old_path,
- new_path: diffFile.new_path,
- position_type: TEXT_DIFF_POSITION_TYPE,
- old_line: options.noteTargetLine.old_line,
- new_line: options.noteTargetLine.new_line,
- });
-
- const postData = {
- view: options.diffViewType,
- line_type: options.linePosition === LINE_POSITION_RIGHT ? NEW_LINE_TYPE : OLD_LINE_TYPE,
- merge_request_diff_head_sha: undefined,
- in_reply_to_discussion_id: '',
- note_project_id: '',
- target_type: options.noteableType,
- target_id: options.noteableData.id,
- return_discussion: true,
- note: {
- noteable_type: options.noteableType,
- noteable_id: options.noteableData.id,
- commit_id: undefined,
- type: LEGACY_DIFF_NOTE_TYPE,
- line_code: options.noteTargetLine.line_code,
- note: options.note,
- position,
- },
- };
-
- expect(utils.getNoteFormData(options)).toEqual({
- endpoint: options.noteableData.create_note_path,
- data: postData,
- });
- });
- });
-
- describe('addLineReferences', () => {
- const lineNumbers = { oldLineNumber: 3, newLineNumber: 4 };
-
- it('should add correct line references when bottom set to true', () => {
- const lines = [{ type: null }, { type: MATCH_LINE_TYPE }];
- const linesWithReferences = utils.addLineReferences(lines, lineNumbers, true);
-
- expect(linesWithReferences[0].old_line).toEqual(lineNumbers.oldLineNumber + 1);
- expect(linesWithReferences[0].new_line).toEqual(lineNumbers.newLineNumber + 1);
- expect(linesWithReferences[1].meta_data.old_pos).toEqual(4);
- expect(linesWithReferences[1].meta_data.new_pos).toEqual(5);
- });
-
- it('should add correct line references when bottom falsy', () => {
- const lines = [{ type: null }, { type: MATCH_LINE_TYPE }, { type: null }];
- const linesWithReferences = utils.addLineReferences(lines, lineNumbers);
-
- expect(linesWithReferences[0].old_line).toEqual(0);
- expect(linesWithReferences[0].new_line).toEqual(1);
- expect(linesWithReferences[1].meta_data.old_pos).toEqual(2);
- expect(linesWithReferences[1].meta_data.new_pos).toEqual(3);
- });
-
- it('should add correct line references when isExpandDown is true', () => {
- const lines = [{ type: null }, { type: MATCH_LINE_TYPE }];
- const linesWithReferences = utils.addLineReferences(lines, lineNumbers, false, true, {
- old_line: 10,
- new_line: 11,
- });
-
- expect(linesWithReferences[1].meta_data.old_pos).toEqual(10);
- expect(linesWithReferences[1].meta_data.new_pos).toEqual(11);
- });
- });
-
- describe('trimFirstCharOfLineContent', () => {
- it('trims the line when it starts with a space', () => {
- expect(utils.trimFirstCharOfLineContent({ rich_text: ' diff' })).toEqual({
- rich_text: 'diff',
- });
- });
-
- it('trims the line when it starts with a +', () => {
- expect(utils.trimFirstCharOfLineContent({ rich_text: '+diff' })).toEqual({
- rich_text: 'diff',
- });
- });
-
- it('trims the line when it starts with a -', () => {
- expect(utils.trimFirstCharOfLineContent({ rich_text: '-diff' })).toEqual({
- rich_text: 'diff',
- });
- });
-
- it('does not trims the line when it starts with a letter', () => {
- expect(utils.trimFirstCharOfLineContent({ rich_text: 'diff' })).toEqual({
- rich_text: 'diff',
- });
- });
-
- it('does not modify the provided object', () => {
- const lineObj = {
- rich_text: ' diff',
- };
-
- utils.trimFirstCharOfLineContent(lineObj);
-
- expect(lineObj).toEqual({ rich_text: ' diff' });
- });
-
- it('handles a undefined or null parameter', () => {
- expect(utils.trimFirstCharOfLineContent()).toEqual({});
- });
- });
-
- describe('prepareDiffData', () => {
- let mock;
- let preparedDiff;
- let splitInlineDiff;
- let splitParallelDiff;
- let completedDiff;
-
- beforeEach(() => {
- mock = getDiffFileMock();
- preparedDiff = { diff_files: [mock] };
- splitInlineDiff = {
- diff_files: [Object.assign({}, mock, { parallel_diff_lines: undefined })],
- };
- splitParallelDiff = {
- diff_files: [Object.assign({}, mock, { highlighted_diff_lines: undefined })],
- };
- completedDiff = {
- diff_files: [Object.assign({}, mock, { highlighted_diff_lines: undefined })],
- };
-
- preparedDiff.diff_files = utils.prepareDiffData(preparedDiff);
- splitInlineDiff.diff_files = utils.prepareDiffData(splitInlineDiff);
- splitParallelDiff.diff_files = utils.prepareDiffData(splitParallelDiff);
- completedDiff.diff_files = utils.prepareDiffData(completedDiff, [mock]);
- });
-
- it('sets the renderIt and collapsed attribute on files', () => {
- const firstParallelDiffLine = preparedDiff.diff_files[0].parallel_diff_lines[2];
-
- expect(firstParallelDiffLine.left.discussions.length).toBe(0);
- expect(firstParallelDiffLine.left).not.toHaveAttr('text');
- expect(firstParallelDiffLine.right.discussions.length).toBe(0);
- expect(firstParallelDiffLine.right).not.toHaveAttr('text');
- const firstParallelChar = firstParallelDiffLine.right.rich_text.charAt(0);
-
- expect(firstParallelChar).not.toBe(' ');
- expect(firstParallelChar).not.toBe('+');
- expect(firstParallelChar).not.toBe('-');
-
- const checkLine = preparedDiff.diff_files[0].highlighted_diff_lines[0];
-
- expect(checkLine.discussions.length).toBe(0);
- expect(checkLine).not.toHaveAttr('text');
- const firstChar = checkLine.rich_text.charAt(0);
-
- expect(firstChar).not.toBe(' ');
- expect(firstChar).not.toBe('+');
- expect(firstChar).not.toBe('-');
-
- expect(preparedDiff.diff_files[0].renderIt).toBeTruthy();
- expect(preparedDiff.diff_files[0].collapsed).toBeFalsy();
- });
-
- it('adds line_code to all lines', () => {
- expect(
- preparedDiff.diff_files[0].parallel_diff_lines.filter(line => !line.line_code),
- ).toHaveLength(0);
- });
-
- it('uses right line code if left has none', () => {
- const firstLine = preparedDiff.diff_files[0].parallel_diff_lines[0];
-
- expect(firstLine.line_code).toEqual(firstLine.right.line_code);
- });
-
- it('guarantees an empty array for both diff styles', () => {
- expect(splitInlineDiff.diff_files[0].parallel_diff_lines.length).toEqual(0);
- expect(splitInlineDiff.diff_files[0].highlighted_diff_lines.length).toBeGreaterThan(0);
- expect(splitParallelDiff.diff_files[0].parallel_diff_lines.length).toBeGreaterThan(0);
- expect(splitParallelDiff.diff_files[0].highlighted_diff_lines.length).toEqual(0);
- });
-
- it('merges existing diff files with newly loaded diff files to ensure split diffs are eventually completed', () => {
- expect(completedDiff.diff_files.length).toEqual(1);
- expect(completedDiff.diff_files[0].parallel_diff_lines.length).toBeGreaterThan(0);
- expect(completedDiff.diff_files[0].highlighted_diff_lines.length).toBeGreaterThan(0);
- });
-
- it('leaves files in the existing state', () => {
- const priorFiles = [mock];
- const fakeNewFile = {
- ...mock,
- content_sha: 'ABC',
- file_hash: 'DEF',
- };
- const updatedFilesList = utils.prepareDiffData({ diff_files: [fakeNewFile] }, priorFiles);
-
- expect(updatedFilesList).toEqual([mock, fakeNewFile]);
- });
-
- it('completes an existing split diff without overwriting existing diffs', () => {
- // The current state has a file that has only loaded inline lines
- const priorFiles = [{ ...mock, parallel_diff_lines: [] }];
- // The next (batch) load loads two files: the other half of that file, and a new file
- const fakeBatch = [
- { ...mock, highlighted_diff_lines: undefined },
- { ...mock, highlighted_diff_lines: undefined, content_sha: 'ABC', file_hash: 'DEF' },
- ];
- const updatedFilesList = utils.prepareDiffData({ diff_files: fakeBatch }, priorFiles);
-
- expect(updatedFilesList).toEqual([
- mock,
- jasmine.objectContaining({
- content_sha: 'ABC',
- file_hash: 'DEF',
- }),
- ]);
- });
- });
-
- describe('isDiscussionApplicableToLine', () => {
- const diffPosition = {
- baseSha: 'ed13df29948c41ba367caa757ab3ec4892509910',
- headSha: 'b921914f9a834ac47e6fd9420f78db0f83559130',
- newLine: null,
- newPath: '500-lines-4.txt',
- oldLine: 5,
- oldPath: '500-lines-4.txt',
- startSha: 'ed13df29948c41ba367caa757ab3ec4892509910',
- };
-
- const wrongDiffPosition = {
- baseSha: 'wrong',
- headSha: 'wrong',
- newLine: null,
- newPath: '500-lines-4.txt',
- oldLine: 5,
- oldPath: '500-lines-4.txt',
- startSha: 'wrong',
- };
-
- const discussions = {
- upToDateDiscussion1: {
- original_position: diffPosition,
- position: wrongDiffPosition,
- },
- outDatedDiscussion1: {
- original_position: wrongDiffPosition,
- position: wrongDiffPosition,
- },
- };
-
- it('returns true when the discussion is up to date', () => {
- expect(
- utils.isDiscussionApplicableToLine({
- discussion: discussions.upToDateDiscussion1,
- diffPosition,
- latestDiff: true,
- }),
- ).toBe(true);
- });
-
- it('returns false when the discussion is not up to date', () => {
- expect(
- utils.isDiscussionApplicableToLine({
- discussion: discussions.outDatedDiscussion1,
- diffPosition,
- latestDiff: true,
- }),
- ).toBe(false);
- });
-
- it('returns true when line codes match and discussion does not contain position and is not active', () => {
- const discussion = { ...discussions.outDatedDiscussion1, line_code: 'ABC_1', active: false };
- delete discussion.original_position;
- delete discussion.position;
-
- expect(
- utils.isDiscussionApplicableToLine({
- discussion,
- diffPosition: {
- ...diffPosition,
- lineCode: 'ABC_1',
- },
- latestDiff: true,
- }),
- ).toBe(false);
- });
-
- it('returns true when line codes match and discussion does not contain position and is active', () => {
- const discussion = { ...discussions.outDatedDiscussion1, line_code: 'ABC_1', active: true };
- delete discussion.original_position;
- delete discussion.position;
-
- expect(
- utils.isDiscussionApplicableToLine({
- discussion,
- diffPosition: {
- ...diffPosition,
- line_code: 'ABC_1',
- },
- latestDiff: true,
- }),
- ).toBe(true);
- });
-
- it('returns false when not latest diff', () => {
- const discussion = { ...discussions.outDatedDiscussion1, line_code: 'ABC_1', active: true };
- delete discussion.original_position;
- delete discussion.position;
-
- expect(
- utils.isDiscussionApplicableToLine({
- discussion,
- diffPosition: {
- ...diffPosition,
- lineCode: 'ABC_1',
- },
- latestDiff: false,
- }),
- ).toBe(false);
- });
- });
-
- describe('generateTreeList', () => {
- let files;
-
- beforeAll(() => {
- files = [
- {
- new_path: 'app/index.js',
- deleted_file: false,
- new_file: false,
- removed_lines: 10,
- added_lines: 0,
- file_hash: 'test',
- },
- {
- new_path: 'app/test/index.js',
- deleted_file: false,
- new_file: true,
- removed_lines: 0,
- added_lines: 0,
- file_hash: 'test',
- },
- {
- new_path: 'app/test/filepathneedstruncating.js',
- deleted_file: false,
- new_file: true,
- removed_lines: 0,
- added_lines: 0,
- file_hash: 'test',
- },
- {
- new_path: 'package.json',
- deleted_file: true,
- new_file: false,
- removed_lines: 0,
- added_lines: 0,
- file_hash: 'test',
- },
- ];
- });
-
- it('creates a tree of files', () => {
- const { tree } = utils.generateTreeList(files);
-
- expect(tree).toEqual([
- {
- key: 'app',
- path: 'app',
- name: 'app',
- type: 'tree',
- tree: [
- {
- addedLines: 0,
- changed: true,
- deleted: false,
- fileHash: 'test',
- key: 'app/index.js',
- name: 'index.js',
- parentPath: 'app/',
- path: 'app/index.js',
- removedLines: 10,
- tempFile: false,
- type: 'blob',
- tree: [],
- },
- {
- key: 'app/test',
- path: 'app/test',
- name: 'test',
- type: 'tree',
- opened: true,
- tree: [
- {
- addedLines: 0,
- changed: true,
- deleted: false,
- fileHash: 'test',
- key: 'app/test/index.js',
- name: 'index.js',
- parentPath: 'app/test/',
- path: 'app/test/index.js',
- removedLines: 0,
- tempFile: true,
- type: 'blob',
- tree: [],
- },
- {
- addedLines: 0,
- changed: true,
- deleted: false,
- fileHash: 'test',
- key: 'app/test/filepathneedstruncating.js',
- name: 'filepathneedstruncating.js',
- parentPath: 'app/test/',
- path: 'app/test/filepathneedstruncating.js',
- removedLines: 0,
- tempFile: true,
- type: 'blob',
- tree: [],
- },
- ],
- },
- ],
- opened: true,
- },
- {
- key: 'package.json',
- parentPath: '/',
- path: 'package.json',
- name: 'package.json',
- type: 'blob',
- changed: true,
- tempFile: false,
- deleted: true,
- fileHash: 'test',
- addedLines: 0,
- removedLines: 0,
- tree: [],
- },
- ]);
- });
-
- it('creates flat list of blobs & folders', () => {
- const { treeEntries } = utils.generateTreeList(files);
-
- expect(Object.keys(treeEntries)).toEqual([
- 'app',
- 'app/index.js',
- 'app/test',
- 'app/test/index.js',
- 'app/test/filepathneedstruncating.js',
- 'package.json',
- ]);
- });
- });
-
- describe('getDiffMode', () => {
- it('returns mode when matched in file', () => {
- expect(
- utils.getDiffMode({
- renamed_file: true,
- }),
- ).toBe('renamed');
- });
-
- it('returns mode_changed if key has no match', () => {
- expect(
- utils.getDiffMode({
- viewer: { name: 'mode_changed' },
- }),
- ).toBe('mode_changed');
- });
-
- it('defaults to replaced', () => {
- expect(utils.getDiffMode({})).toBe('replaced');
- });
- });
-
- describe('getLowestSingleFolder', () => {
- it('returns path and tree of lowest single folder tree', () => {
- const folder = {
- name: 'app',
- type: 'tree',
- tree: [
- {
- name: 'javascripts',
- type: 'tree',
- tree: [
- {
- type: 'blob',
- name: 'index.js',
- },
- ],
- },
- ],
- };
- const { path, treeAcc } = utils.getLowestSingleFolder(folder);
-
- expect(path).toEqual('app/javascripts');
- expect(treeAcc).toEqual([
- {
- type: 'blob',
- name: 'index.js',
- },
- ]);
- });
-
- it('returns passed in folders path & tree when more than tree exists', () => {
- const folder = {
- name: 'app',
- type: 'tree',
- tree: [
- {
- name: 'spec',
- type: 'blob',
- tree: [],
- },
- ],
- };
- const { path, treeAcc } = utils.getLowestSingleFolder(folder);
-
- expect(path).toEqual('app');
- expect(treeAcc).toBeNull();
- });
- });
-
- describe('flattenTree', () => {
- it('returns flattened directory structure', () => {
- const tree = [
- {
- type: 'tree',
- name: 'app',
- tree: [
- {
- type: 'tree',
- name: 'javascripts',
- tree: [
- {
- type: 'blob',
- name: 'index.js',
- tree: [],
- },
- ],
- },
- ],
- },
- {
- type: 'tree',
- name: 'ee',
- tree: [
- {
- type: 'tree',
- name: 'lib',
- tree: [
- {
- type: 'tree',
- name: 'ee',
- tree: [
- {
- type: 'tree',
- name: 'gitlab',
- tree: [
- {
- type: 'tree',
- name: 'checks',
- tree: [
- {
- type: 'tree',
- name: 'longtreenametomakepath',
- tree: [
- {
- type: 'blob',
- name: 'diff_check.rb',
- tree: [],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- {
- type: 'tree',
- name: 'spec',
- tree: [
- {
- type: 'tree',
- name: 'javascripts',
- tree: [],
- },
- {
- type: 'blob',
- name: 'index_spec.js',
- tree: [],
- },
- ],
- },
- ];
- const flattened = utils.flattenTree(tree);
-
- expect(flattened).toEqual([
- {
- type: 'tree',
- name: 'app/javascripts',
- tree: [
- {
- type: 'blob',
- name: 'index.js',
- tree: [],
- },
- ],
- },
- {
- type: 'tree',
- name: 'ee/lib/…/…/…/longtreenametomakepath',
- tree: [
- {
- name: 'diff_check.rb',
- tree: [],
- type: 'blob',
- },
- ],
- },
- {
- type: 'tree',
- name: 'spec',
- tree: [
- {
- type: 'tree',
- name: 'javascripts',
- tree: [],
- },
- {
- type: 'blob',
- name: 'index_spec.js',
- tree: [],
- },
- ],
- },
- ]);
- });
- });
-
- describe('convertExpandLines', () => {
- it('converts expanded lines to normal lines', () => {
- const diffLines = [
- {
- type: 'match',
- old_line: 1,
- new_line: 1,
- },
- {
- type: '',
- old_line: 2,
- new_line: 2,
- },
- ];
-
- const lines = utils.convertExpandLines({
- diffLines,
- data: [{ text: 'expanded' }],
- typeKey: 'type',
- oldLineKey: 'old_line',
- newLineKey: 'new_line',
- mapLine: ({ line, oldLine, newLine }) => ({
- ...line,
- old_line: oldLine,
- new_line: newLine,
- }),
- });
-
- expect(lines).toEqual([
- {
- text: 'expanded',
- new_line: 1,
- old_line: 1,
- discussions: [],
- hasForm: false,
- },
- {
- type: '',
- old_line: 2,
- new_line: 2,
- },
- ]);
- });
- });
-});