Always update related changes Even if the loadData() call is not a location change. Related changes should always be updated. Google-Bug-Id: b/210843729 Change-Id: Ie71f664733b0768da2f22d00086a56e691eafbb0
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts index 5a54599..5287c5a 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -2147,29 +2147,28 @@ if (isLocationChange) { this._editingCommitMessage = false; - const relatedChangesLoaded = coreDataPromise.then(() => { - let relatedChangesPromise: - | Promise<RelatedChangesInfo | undefined> - | undefined; - const patchNum = this._computeLatestPatchNum(this._allPatchSets); - if (this._change && patchNum) { - relatedChangesPromise = this.restApiService - .getRelatedChanges(this._change._number, patchNum) - .then(response => { - if (this._change && response) { - this.hasParent = this._calculateHasParent( - this._change.change_id, - response.changes - ); - } - return response; - }); - } - // TODO: use returned Promise - this.getRelatedChangesList()?.reload(relatedChangesPromise); - }); - allDataPromises.push(relatedChangesLoaded); } + const relatedChangesLoaded = coreDataPromise.then(() => { + let relatedChangesPromise: + | Promise<RelatedChangesInfo | undefined> + | undefined; + const patchNum = this._computeLatestPatchNum(this._allPatchSets); + if (this._change && patchNum) { + relatedChangesPromise = this.restApiService + .getRelatedChanges(this._change._number, patchNum) + .then(response => { + if (this._change && response) { + this.hasParent = this._calculateHasParent( + this._change.change_id, + response.changes + ); + } + return response; + }); + } + return this.getRelatedChangesList()?.reload(relatedChangesPromise); + }); + allDataPromises.push(relatedChangesLoaded); Promise.all(allDataPromises).then(() => { // Loading of commments data is no longer part of this reporting
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts index 4ca593a..c432276 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -1448,15 +1448,27 @@ assert.isTrue(recreateSpy.calledOnce); }); - test('related changes are not updated after other action', async () => { - sinon.stub(element, 'loadData').callsFake(() => Promise.resolve()); + test('related changes are updated when loadData is called', async () => { await flush(); const relatedChanges = element.shadowRoot!.querySelector( '#relatedChanges' ) as GrRelatedChangesList; - sinon.stub(relatedChanges, 'reload'); + const reloadStub = sinon.stub(relatedChanges, 'reload'); + stubRestApi('getMergeable').returns( + Promise.resolve({...createMergeable(), mergeable: true}) + ); + + element.params = createAppElementChangeViewParams(); + element.changeModel.setState({ + loadingStatus: LoadingStatus.LOADED, + change: { + ...createChangeViewChange(), + }, + }); + await element.loadData(true); assert.isFalse(navigateToChangeStub.called); + assert.isTrue(reloadStub.called); }); test('_computeCopyTextForTitle', () => {