Commit d5f4a8dc authored by Filipa Lacerda's avatar Filipa Lacerda

Merge branch 'diff-fix-duplicate-key-error' into 'master'

Fixed diff rendering causing a duplicate key warning

Closes #56797

See merge request gitlab-org/gitlab-ce!24634
parents 301e4a68 a64bc0c1
...@@ -144,6 +144,7 @@ export default { ...@@ -144,6 +144,7 @@ export default {
if (left || right) { if (left || right) {
return { return {
...line,
left: line.left ? mapDiscussions(line.left) : null, left: line.left ? mapDiscussions(line.left) : null,
right: line.right ? mapDiscussions(line.right, () => !left) : null, right: line.right ? mapDiscussions(line.right, () => !left) : null,
}; };
......
...@@ -161,6 +161,7 @@ export function addContextLines(options) { ...@@ -161,6 +161,7 @@ export function addContextLines(options) {
const normalizedParallelLines = contextLines.map(line => ({ const normalizedParallelLines = contextLines.map(line => ({
left: line, left: line,
right: line, right: line,
line_code: line.line_code,
})); }));
if (options.bottom) { if (options.bottom) {
......
...@@ -14,7 +14,7 @@ import { MERGE_REQUEST_NOTEABLE_TYPE } from '~/notes/constants'; ...@@ -14,7 +14,7 @@ import { MERGE_REQUEST_NOTEABLE_TYPE } from '~/notes/constants';
import diffFileMockData from '../mock_data/diff_file'; import diffFileMockData from '../mock_data/diff_file';
import { noteableDataMock } from '../../notes/mock_data'; import { noteableDataMock } from '../../notes/mock_data';
const getDiffFileMock = () => Object.assign({}, diffFileMockData); const getDiffFileMock = () => JSON.parse(JSON.stringify(diffFileMockData));
describe('DiffsStoreUtils', () => { describe('DiffsStoreUtils', () => {
describe('findDiffFile', () => { describe('findDiffFile', () => {
...@@ -80,30 +80,44 @@ describe('DiffsStoreUtils', () => { ...@@ -80,30 +80,44 @@ describe('DiffsStoreUtils', () => {
}); });
describe('addContextLines', () => { describe('addContextLines', () => {
it('should add context lines properly with bottom parameter', () => { it('should add context lines', () => {
const diffFile = getDiffFileMock(); const diffFile = getDiffFileMock();
const inlineLines = diffFile.highlighted_diff_lines; const inlineLines = diffFile.highlighted_diff_lines;
const parallelLines = diffFile.parallel_diff_lines; const parallelLines = diffFile.parallel_diff_lines;
const lineNumbers = { oldLineNumber: 3, newLineNumber: 5 }; const lineNumbers = { oldLineNumber: 3, newLineNumber: 5 };
const contextLines = [{ lineNumber: 42 }]; const contextLines = [{ lineNumber: 42, line_code: '123' }];
const options = { inlineLines, parallelLines, contextLines, lineNumbers, bottom: true }; const options = { inlineLines, parallelLines, contextLines, lineNumbers };
const inlineIndex = utils.findIndexInInlineLines(inlineLines, lineNumbers); const inlineIndex = utils.findIndexInInlineLines(inlineLines, lineNumbers);
const parallelIndex = utils.findIndexInParallelLines(parallelLines, lineNumbers); const parallelIndex = utils.findIndexInParallelLines(parallelLines, lineNumbers);
const normalizedParallelLine = { const normalizedParallelLine = {
left: options.contextLines[0], left: options.contextLines[0],
right: options.contextLines[0], right: options.contextLines[0],
line_code: '123',
}; };
utils.addContextLines(options); utils.addContextLines(options);
expect(inlineLines[inlineLines.length - 1]).toEqual(contextLines[0]); expect(inlineLines[inlineIndex]).toEqual(contextLines[0]);
expect(parallelLines[parallelLines.length - 1]).toEqual(normalizedParallelLine); expect(parallelLines[parallelIndex]).toEqual(normalizedParallelLine);
});
it('should add context lines properly with bottom parameter', () => {
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 };
const normalizedParallelLine = {
left: options.contextLines[0],
right: options.contextLines[0],
line_code: '123',
};
delete options.bottom;
utils.addContextLines(options); utils.addContextLines(options);
expect(inlineLines[inlineIndex]).toEqual(contextLines[0]); expect(inlineLines[inlineLines.length - 1]).toEqual(contextLines[0]);
expect(parallelLines[parallelIndex]).toEqual(normalizedParallelLine); expect(parallelLines[parallelLines.length - 1]).toEqual(normalizedParallelLine);
}); });
}); });
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment