From 6d997710637535cfe2f8d466101babd56a357571 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 22 Sep 2022 14:51:21 -0600 Subject: [PATCH 1/6] Add the diverged commits when displaying the merge controls Changelog: fixed --- .../components/states/ready_to_merge.vue | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 16a7119e1028b2..0ca75f6eff0cba 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -703,6 +703,18 @@ export default { :class="{ 'gl-mb-5': shouldShowMergeControls }" class="gl-w-full gl-order-n1 gl-text-gray-500" > +

+ + + +

+ -- GitLab From 17f9f997109cea04757501475a6a559d3cdcfcef Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 22 Sep 2022 16:07:55 -0600 Subject: [PATCH 2/6] Test that the ready-to-merge widget shows the diverged commits ... or not. --- .../states/mr_widget_ready_to_merge_spec.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js index f5a489f1a32455..9844af208d2f78 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js @@ -105,6 +105,7 @@ const createComponent = ( }, stubs: { CommitEdit, + GlSprintf, }, apolloProvider: createMockApollo([[readyToMergeQuery, readyToMergeResponseSpy]]), }); @@ -775,6 +776,34 @@ describe('ReadyToMerge', () => { }); }); + describe('source and target branches diverged', () => { + describe('when the MR is showing the Merge button', () => { + it('does not display the diverged commits message if the source branch is not behind the target', () => { + createComponent({ mr: { divergedCommitsCount: 0 } }); + + const textBody = wrapper.text(); + + expect(textBody).toEqual( + expect.not.stringContaining('The source branch is 0 commits behind the target branch'), + ); + expect(textBody).toEqual( + expect.not.stringContaining('The source branch is 0 commit behind the target branch'), + ); + expect(textBody).toEqual( + expect.not.stringContaining('The source branch is behind the target branch'), + ); + }); + + it('shows the diverged commits text when the source branch is behind the target', () => { + createComponent({ mr: { divergedCommitsCount: 9001 } }); + + expect(wrapper.text()).toEqual( + expect.stringContaining('The source branch is 9001 commits behind the target branch'), + ); + }); + }); + }); + describe('Merge button when pipeline has failed', () => { beforeEach(() => { createComponent({ -- GitLab From d30245ad97c0fe3459364e7c1fe37114f6d969c3 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 27 Sep 2022 12:42:12 -0600 Subject: [PATCH 3/6] Add a computed property for diverged commits greater than 0 --- .../components/states/ready_to_merge.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 0ca75f6eff0cba..1559c2e771a871 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -337,6 +337,9 @@ export default { ? __('Deleted the source branch.') : __('Did not delete the source branch.'); }, + sourceHasDivergedFromTarget(){ + return this.mr.divergedCommitsCount > 0; + }, showMergeDetailsHeader() { return ['readyToMerge'].indexOf(this.mr.state) >= 0; }, @@ -663,7 +666,7 @@ export default { {{ __('Merge details') }}

    -
  • +
  • @@ -703,7 +706,7 @@ export default { :class="{ 'gl-mb-5': shouldShowMergeControls }" class="gl-w-full gl-order-n1 gl-text-gray-500" > -

    +

    @@ -714,7 +717,7 @@ export default {

    - + Date: Tue, 27 Sep 2022 12:51:56 -0600 Subject: [PATCH 4/6] Move text to i18n object --- .../components/states/ready_to_merge.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 1559c2e771a871..5e89d28ee50ee0 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -17,7 +17,7 @@ import readyToMergeQuery from 'ee_else_ce/vue_merge_request_widget/queries/state import createFlash from '~/flash'; import { secondsToMilliseconds } from '~/lib/utils/datetime_utility'; import simplePoll from '~/lib/utils/simple_poll'; -import { __, s__ } from '~/locale'; +import { __, s__, n__ } from '~/locale'; import SmartInterval from '~/smart_interval'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { helpPagePath } from '~/helpers/help_page_helper'; @@ -337,7 +337,7 @@ export default { ? __('Deleted the source branch.') : __('Did not delete the source branch.'); }, - sourceHasDivergedFromTarget(){ + sourceHasDivergedFromTarget() { return this.mr.divergedCommitsCount > 0; }, showMergeDetailsHeader() { @@ -512,6 +512,8 @@ export default { mergeAndSquashCommitTemplatesHintText: s__( 'mrWidget|To change these default messages, edit the templates for both the merge and squash commit messages. %{linkStart}Learn more.%{linkEnd}', ), + sourceDivergedFromTargetText: s__('mrWidget|The source branch is %{link} the target branch'), + divergedCommits: (count) => n__('%d commit behind', '%d commits behind', count), }, }; @@ -707,12 +709,10 @@ export default { class="gl-w-full gl-order-n1 gl-text-gray-500" >

    - + -- GitLab From 8df24cf30cc9963ff4f404f8b1767c6d8877943b Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 27 Sep 2022 12:59:05 -0600 Subject: [PATCH 5/6] Change toEqual assertions to toBe assertions --- .../components/states/mr_widget_ready_to_merge_spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js index 9844af208d2f78..eb2ecc1362139e 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js @@ -783,13 +783,13 @@ describe('ReadyToMerge', () => { const textBody = wrapper.text(); - expect(textBody).toEqual( + expect(textBody).toBe( expect.not.stringContaining('The source branch is 0 commits behind the target branch'), ); - expect(textBody).toEqual( + expect(textBody).toBe( expect.not.stringContaining('The source branch is 0 commit behind the target branch'), ); - expect(textBody).toEqual( + expect(textBody).toBe( expect.not.stringContaining('The source branch is behind the target branch'), ); }); @@ -797,7 +797,7 @@ describe('ReadyToMerge', () => { it('shows the diverged commits text when the source branch is behind the target', () => { createComponent({ mr: { divergedCommitsCount: 9001 } }); - expect(wrapper.text()).toEqual( + expect(wrapper.text()).toBe( expect.stringContaining('The source branch is 9001 commits behind the target branch'), ); }); -- GitLab From 051a8301c34d42fef3d7a706361b311b64464963 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 27 Sep 2022 15:46:29 -0600 Subject: [PATCH 6/6] Revert "Change toEqual assertions to toBe assertions" This reverts commit 8df24cf30cc9963ff4f404f8b1767c6d8877943b. The `.toBe` assertion does not work with `stringContaining` matchers. --- .../components/states/mr_widget_ready_to_merge_spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js index eb2ecc1362139e..9844af208d2f78 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js @@ -783,13 +783,13 @@ describe('ReadyToMerge', () => { const textBody = wrapper.text(); - expect(textBody).toBe( + expect(textBody).toEqual( expect.not.stringContaining('The source branch is 0 commits behind the target branch'), ); - expect(textBody).toBe( + expect(textBody).toEqual( expect.not.stringContaining('The source branch is 0 commit behind the target branch'), ); - expect(textBody).toBe( + expect(textBody).toEqual( expect.not.stringContaining('The source branch is behind the target branch'), ); }); @@ -797,7 +797,7 @@ describe('ReadyToMerge', () => { it('shows the diverged commits text when the source branch is behind the target', () => { createComponent({ mr: { divergedCommitsCount: 9001 } }); - expect(wrapper.text()).toBe( + expect(wrapper.text()).toEqual( expect.stringContaining('The source branch is 9001 commits behind the target branch'), ); }); -- GitLab