Remove usage of getOrCreateThread
getOrCreateThread method updates the existing thread element if the
range matches instead of creating a new one.
If multiple threads were created on the same range then only one of
them was rendered.
Google-bug-id: b/202021310
Change-Id: I1c377402456d04661a9e68096ed2f355fe66a0e0
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
index 90d6218..4641897 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
@@ -732,7 +732,9 @@
_threadsChanged(threads: CommentThread[]) {
const threadEls = new Set<Object>();
for (const thread of threads) {
- threadEls.add(this._getOrCreateThread(thread));
+ const threadEl = this._createThreadElement(thread);
+ this._attachThreadElement(threadEl);
+ threadEls.add(threadEl);
}
// Remove all threads that are no longer existing.
for (const threadEl of this.getThreadEls()) {
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 344f9d8..16db22d 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 {Side, createDefaultDiffPrefs} from '../../../constants/constants.js';
-import {createChange} from '../../../test/test-data-generators.js';
+import {createChange, createCommentThread, createComment} from '../../../test/test-data-generators.js';
import {CoverageType} from '../../../types/types.js';
import {
addListenerForTest,
@@ -1127,6 +1127,35 @@
assert.equal(threads[0].path, element.file.path);
});
+ test('multiple threads created on the same range', () => {
+ element.patchRange = {
+ basePatchNum: 2,
+ patchNum: 3,
+ };
+ element.file = {basePath: 'file_renamed.txt', path: element.path};
+
+ const comment = createComment();
+ comment.range = {
+ start_line: 1,
+ start_character: 1,
+ end_line: 2,
+ end_character: 2,
+ };
+ const thread = createCommentThread([comment]);
+ element.threads = [thread];
+
+ let threads = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread');
+
+ assert.equal(threads.length, 1);
+
+ element.threads= [...element.threads, thread];
+
+ threads = dom(element.$.diff)
+ .queryDistributedElements('gr-comment-thread');
+ assert.equal(threads.length, 2);
+ });
+
test('thread should use new file path if first created' +
'on patch set (left) but is base', () => {
const diffSide = Side.LEFT;