Determine CommentSide in gr-diff-host
This is a step towards making gr-diff oblivious of the specifics of the
selected PatchRange. This makes it easier to reuse gr-diff independently
of the underlying versioning system.
Change-Id: Iacfc4b6eb798f2a94c7f0d846f52fb704508b174
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
index 20063f4..25a4eff 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
@@ -21,7 +21,7 @@
import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';
import {createCommentThreads} from '../../../utils/comment-util.js';
-import {Side, CommentSide} from '../../../constants/constants.js';
+import {Side} from '../../../constants/constants.js';
import {createChange} from '../../../test/test-data-generators.js';
import {CoverageType} from '../../../types/types.js';
import {addListenerForTest, stubRestApi} from '../../../test/test-utils.js';
@@ -958,14 +958,16 @@
suite('create-comment', () => {
test('creates comments if they do not exist yet', () => {
const diffSide = Side.LEFT;
- const commentSide = CommentSide.PARENT;
+ element.patchRange = {
+ basePatchNum: 'PARENT',
+ patchNum: 2,
+ };
element.dispatchEvent(new CustomEvent('create-comment', {
detail: {
- patchNum: '2',
+ patchNum: 2,
lineNum: 3,
side: diffSide,
- commentSide,
path: '/p',
},
}));
@@ -975,6 +977,7 @@
assert.equal(threads.length, 1);
assert.equal(threads[0].diffSide, diffSide);
+ assert.isTrue(threads[0].isOnParent);
assert.equal(threads[0].range, undefined);
assert.equal(threads[0].patchNum, 2);
@@ -988,10 +991,9 @@
element.dispatchEvent(new CustomEvent('create-comment', {
detail: {
- patchNum: '3',
+ patchNum: 3,
lineNum: 1,
side: diffSide,
- commentSide,
path: '/p',
range,
},
@@ -1002,21 +1004,101 @@
assert.equal(threads.length, 2);
assert.equal(threads[1].diffSide, diffSide);
+ assert.isTrue(threads[0].isOnParent);
assert.equal(threads[1].range, range);
assert.equal(threads[1].patchNum, 3);
});
+ test('should not be on parent if on the right', () => {
+ element.patchRange = {
+ basePatchNum: 2,
+ patchNum: 3,
+ };
+
+ element.dispatchEvent(new CustomEvent('create-comment', {
+ detail: {
+ patchNum: 2,
+ side: Side.RIGHT,
+ },
+ }));
+
+ const thread = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread')[0];
+
+ assert.isFalse(thread.isOnParent);
+ });
+
+ test('should be on parent if right and base is PARENT', () => {
+ element.patchRange = {
+ basePatchNum: 'PARENT',
+ patchNum: 3,
+ };
+
+ element.dispatchEvent(new CustomEvent('create-comment', {
+ detail: {
+ patchNum: 3,
+ side: Side.LEFT,
+ },
+ }));
+
+ const thread = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread')[0];
+
+ assert.isTrue(thread.isOnParent);
+ });
+
+ test('should be on parent if right and base negative', () => {
+ element.patchRange = {
+ basePatchNum: -2, // merge parents have negative numbers
+ patchNum: 3,
+ };
+
+ element.dispatchEvent(new CustomEvent('create-comment', {
+ detail: {
+ patchNum: 3,
+ side: Side.LEFT,
+ },
+ }));
+
+ const thread = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread')[0];
+
+ assert.isTrue(thread.isOnParent);
+ });
+
+ test('should not be on parent otherwise', () => {
+ element.patchRange = {
+ basePatchNum: 2, // merge parents have negative numbers
+ patchNum: 3,
+ };
+
+ element.dispatchEvent(new CustomEvent('create-comment', {
+ detail: {
+ patchNum: 3,
+ side: Side.LEFT,
+ },
+ }));
+
+ const thread = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread')[0];
+
+ assert.isFalse(thread.isOnParent);
+ });
+
test('thread should use old file path if first created ' +
'on patch set (left) before renaming', () => {
const diffSide = Side.LEFT;
+ element.patchRange = {
+ basePatchNum: 2,
+ patchNum: 3,
+ };
element.file = {basePath: 'file_renamed.txt', path: element.path};
element.dispatchEvent(new CustomEvent('create-comment', {
detail: {
- patchNum: '2',
+ patchNum: 2,
lineNum: 3,
side: diffSide,
- commentSide: CommentSide.REVISION,
path: '/p',
},
}));
@@ -1032,14 +1114,17 @@
test('thread should use new file path if first created' +
'on patch set (right) after renaming', () => {
const diffSide = Side.RIGHT;
+ element.patchRange = {
+ basePatchNum: 2,
+ patchNum: 3,
+ };
element.file = {basePath: 'file_renamed.txt', path: element.path};
element.dispatchEvent(new CustomEvent('create-comment', {
detail: {
- patchNum: '2',
+ patchNum: 2,
lineNum: 3,
side: diffSide,
- commentSide: CommentSide.REVISION,
path: '/p',
},
}));
@@ -1055,14 +1140,17 @@
test('thread should use new file path if first created' +
'on patch set (left) but is base', () => {
const diffSide = Side.LEFT;
+ element.patchRange = {
+ basePatchNum: 'PARENT',
+ patchNum: 3,
+ };
element.file = {basePath: 'file_renamed.txt', path: element.path};
element.dispatchEvent(new CustomEvent('create-comment', {
detail: {
- patchNum: '2',
+ patchNum: 2,
lineNum: 3,
side: diffSide,
- commentSide: CommentSide.PARENT,
path: '/p',
range: undefined,
},