From 7d01bf2c60f617bdd56df43486ef12f23bad762e Mon Sep 17 00:00:00 2001 From: Phawin Khongkhasawan <lifez999@gmail.com> Date: Fri, 8 Mar 2024 14:21:03 +0000 Subject: [PATCH] Fix links to project issues redirect to wrong server Changelog: fixed --- .../issuable/list/components/issuable_item.vue | 12 ++++++------ .../list/components/issuable_item_spec.js | 16 ++++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/vue_shared/issuable/list/components/issuable_item.vue b/app/assets/javascripts/vue_shared/issuable/list/components/issuable_item.vue index c2dcdebe821b6..53c39f1431338 100644 --- a/app/assets/javascripts/vue_shared/issuable/list/components/issuable_item.vue +++ b/app/assets/javascripts/vue_shared/issuable/list/components/issuable_item.vue @@ -91,14 +91,14 @@ export default { externalAuthor() { return this.issuable.externalAuthor; }, - webUrl() { - return this.issuable.gitlabWebUrl || this.issuable.webUrl; + issuableLinkHref() { + return this.issuable.webPath || this.issuable.gitlabWebUrl || this.issuable.webUrl; }, authorId() { return getIdFromGraphQLId(this.author.id); }, isIssuableUrlExternal() { - return isExternal(this.webUrl ?? ''); + return isExternal(this.issuableLinkHref ?? ''); }, reference() { return this.issuable.reference || `${this.issuableSymbol}${this.issuable.iid}`; @@ -190,7 +190,7 @@ export default { ); }, issuableNotesLink() { - return setUrlFragment(this.webUrl, 'notes'); + return setUrlFragment(this.issuableLinkHref, 'notes'); }, statusBadgeVariant() { if (this.isMergeRequest && this.isClosed) { @@ -238,7 +238,7 @@ export default { return; } e.preventDefault(); - this.$emit('select-issuable', { iid: this.issuableIid, webUrl: this.webUrl }); + this.$emit('select-issuable', { iid: this.issuableIid, webUrl: this.issuableLinkHref }); }, }, }; @@ -289,7 +289,7 @@ export default { <gl-link class="issue-title-text" dir="auto" - :href="webUrl" + :href="issuableLinkHref" data-testid="issuable-title-link" v-bind="issuableTitleProps" @click="handleIssuableItemClick" diff --git a/spec/frontend/vue_shared/issuable/list/components/issuable_item_spec.js b/spec/frontend/vue_shared/issuable/list/components/issuable_item_spec.js index e898b3977d8a2..7aee325b26673 100644 --- a/spec/frontend/vue_shared/issuable/list/components/issuable_item_spec.js +++ b/spec/frontend/vue_shared/issuable/list/components/issuable_item_spec.js @@ -274,17 +274,21 @@ describe('IssuableItem', () => { describe('template', () => { it.each` - gitlabWebUrl | webUrl | expectedHref | expectedTarget - ${undefined} | ${`${MOCK_GITLAB_URL}/issue`} | ${`${MOCK_GITLAB_URL}/issue`} | ${undefined} - ${undefined} | ${'https://jira.com/issue'} | ${'https://jira.com/issue'} | ${'_blank'} - ${'/gitlab-org/issue'} | ${'https://jira.com/issue'} | ${'/gitlab-org/issue'} | ${undefined} + webPath | gitlabWebUrl | webUrl | expectedHref | expectedTarget + ${undefined} | ${undefined} | ${`${MOCK_GITLAB_URL}/issue`} | ${`${MOCK_GITLAB_URL}/issue`} | ${undefined} + ${undefined} | ${undefined} | ${'https://jira.com/issue'} | ${'https://jira.com/issue'} | ${'_blank'} + ${undefined} | ${'/gitlab-org/issue'} | ${'https://jira.com/issue'} | ${'/gitlab-org/issue'} | ${undefined} + ${'/gitlab-org/gitlab-test/-/issues/1'} | ${undefined} | ${'https://jira.com/issue'} | ${'/gitlab-org/gitlab-test/-/issues/1'} | ${undefined} + ${'/gitlab-org/gitlab-test/-/issues/1'} | ${'/gitlab-org/issue'} | ${undefined} | ${'/gitlab-org/gitlab-test/-/issues/1'} | ${undefined} + ${'/gitlab-org/gitlab-test/-/issues/1'} | ${undefined} | ${undefined} | ${'/gitlab-org/gitlab-test/-/issues/1'} | ${undefined} `( - 'renders issuable title correctly when `gitlabWebUrl` is `$gitlabWebUrl` and webUrl is `$webUrl`', - async ({ webUrl, gitlabWebUrl, expectedHref, expectedTarget }) => { + 'renders issuable title correctly when `gitlabWebUrl` is `$gitlabWebUrl`, webUrl is `$webUrl`, and webPath is `$webPath`', + async ({ webUrl, gitlabWebUrl, webPath, expectedHref, expectedTarget }) => { wrapper = createComponent({ issuable: { ...mockIssuable, webUrl, + webPath, gitlabWebUrl, }, }); -- GitLab