From 2f040f7569e40c1725037eaa822a55dbaf26e415 Mon Sep 17 00:00:00 2001 From: Phil Hughes <me@iamphill.com> Date: Mon, 14 Oct 2024 14:11:29 +0100 Subject: [PATCH] Updated summary text for approvals in reviewers sidebar widget https://gitlab.com/gitlab-org/gitlab/-/issues/499064 --- .../components/reviewers/approval_summary.vue | 6 +++++- .../queries/approval_summary.query.graphql | 1 + .../queries/approval_summary.subscription.graphql | 1 + .../components/reviewers/approval_summary_spec.js | 15 ++++++++++++++- locale/gitlab.pot | 3 +++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_summary.vue b/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_summary.vue index 3572d36f885c..5256ccab0961 100644 --- a/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_summary.vue +++ b/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_summary.vue @@ -1,5 +1,5 @@ <script> -import { n__, sprintf, s__ } from '~/locale'; +import { n__, sprintf, s__, __ } from '~/locale'; import { getApprovalRuleNamesLeft } from 'ee/vue_merge_request_widget/mappers'; import { toNounSeriesText } from '~/lib/utils/grammar'; import { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants'; @@ -81,6 +81,10 @@ export default { return s__('mrWidget|Approval is optional'); } + if (this.mergeRequest.approved) { + return __('All required approvals given'); + } + if (this.rulesLeft.length && !this.shortText) { return sprintf( n__( diff --git a/ee/app/assets/javascripts/merge_requests/queries/approval_summary.query.graphql b/ee/app/assets/javascripts/merge_requests/queries/approval_summary.query.graphql index e41e43b36f43..ccfeb61e6ee5 100644 --- a/ee/app/assets/javascripts/merge_requests/queries/approval_summary.query.graphql +++ b/ee/app/assets/javascripts/merge_requests/queries/approval_summary.query.graphql @@ -3,6 +3,7 @@ query approvalSummary($projectPath: ID!, $iid: String!) { id mergeRequest(iid: $iid) { id + approved approvalsLeft approvalsRequired approvedBy { diff --git a/ee/app/assets/javascripts/merge_requests/queries/approval_summary.subscription.graphql b/ee/app/assets/javascripts/merge_requests/queries/approval_summary.subscription.graphql index c01821db4c85..2b59206abb89 100644 --- a/ee/app/assets/javascripts/merge_requests/queries/approval_summary.subscription.graphql +++ b/ee/app/assets/javascripts/merge_requests/queries/approval_summary.subscription.graphql @@ -2,6 +2,7 @@ subscription approvalSummarySubscription($issuableId: IssuableID!) { mergeRequestApprovalStateUpdated(issuableId: $issuableId) { ... on MergeRequest { id + approved approvalsLeft approvalsRequired approvedBy { diff --git a/ee/spec/frontend/merge_requests/components/reviewers/approval_summary_spec.js b/ee/spec/frontend/merge_requests/components/reviewers/approval_summary_spec.js index bd6b03878c6d..7e959965c7ed 100644 --- a/ee/spec/frontend/merge_requests/components/reviewers/approval_summary_spec.js +++ b/ee/spec/frontend/merge_requests/components/reviewers/approval_summary_spec.js @@ -16,6 +16,7 @@ const mockData = ({ approvalsRequired = 1, approvalsLeft = 1, approvedBy = [] } id: 1, mergeRequest: { id: 1, + approved: approvalsLeft === 0, approvalsLeft, approvalsRequired, approvedBy: { @@ -79,6 +80,16 @@ describe('Reviewers drawer approval summary component', () => { expect(wrapper.text()).toBe('Requires 1 approval from Code Owners.'); }); + + it('renders approval given when approved', async () => { + createComponent({ + resolver: jest.fn().mockResolvedValue(mockData({ approvalsLeft: 0 })), + }); + + await waitForPromises(); + + expect(wrapper.text()).toBe('All required approvals given'); + }); }); describe('when approval is optional', () => { @@ -98,6 +109,8 @@ describe('Reviewers drawer approval summary component', () => { await waitForPromises(); + expect(wrapper.text()).toBe('Requires 1 approval from Code Owners.'); + mockedSubscription.next({ data: { mergeRequestApprovalStateUpdated: mockData({ @@ -110,6 +123,6 @@ describe('Reviewers drawer approval summary component', () => { await waitForPromises(); - expect(wrapper.text()).toBe('Requires 0 approvals from Code Owners.'); + expect(wrapper.text()).toBe('All required approvals given'); }); }); diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 4012fba884fd..f39d109ff51a 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -5661,6 +5661,9 @@ msgstr "" msgid "All protected branches" msgstr "" +msgid "All required approvals given" +msgstr "" + msgid "All required approvals must be given." msgstr "" -- GitLab