From 0cf721bdd2752d20340c96e00e990936887c478c Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Tue, 6 Nov 2018 15:14:42 +0000 Subject: Disable stop environment button while deployment is running --- .../components/deployment.vue | 30 +++++++++++++++++----- .../unreleased/25140-disable-stop-button.yml | 5 ++++ locale/gitlab.pot | 6 +++++ .../user_sees_deployment_widget_spec.rb | 4 +-- .../vue_mr_widget/components/deployment_spec.js | 4 +++ 5 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 changelogs/unreleased/25140-disable-stop-button.yml diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue index 57c52a2016a..2a8380f5f2b 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue @@ -65,6 +65,14 @@ export default { deployedText() { return this.$options.deployedTextMap[this.deployment.status]; }, + isDeployInProgress() { + return this.deployment.status === 'running'; + }, + deployInProgressTooltip() { + return this.isDeployInProgress + ? __('Stopping this environment is currently not possible as a deployment is in progress') + : ''; + }, shouldRenderDropdown() { return ( this.enableCiEnvironmentsStatusChanges && @@ -183,15 +191,23 @@ export default { css-class="js-deploy-url js-deploy-url-feature-flag deploy-link btn btn-default btn-sm inlin" /> - - - + + + + diff --git a/changelogs/unreleased/25140-disable-stop-button.yml b/changelogs/unreleased/25140-disable-stop-button.yml new file mode 100644 index 00000000000..a6ef52c3155 --- /dev/null +++ b/changelogs/unreleased/25140-disable-stop-button.yml @@ -0,0 +1,5 @@ +--- +title: Disables stop environment button while the deploy is in progress +merge_request: +author: +type: other diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 98417c08dfd..3e35a5dbdf4 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -5847,6 +5847,9 @@ msgstr "" msgid "Status" msgstr "" +msgid "Stop environment" +msgstr "" + msgid "Stop impersonation" msgstr "" @@ -5856,6 +5859,9 @@ msgstr "" msgid "Stopped" msgstr "" +msgid "Stopping this environment is currently not possible as a deployment is in progress" +msgstr "" + msgid "Storage" msgstr "" diff --git a/spec/features/merge_request/user_sees_deployment_widget_spec.rb b/spec/features/merge_request/user_sees_deployment_widget_spec.rb index cbd130b9740..0e439c8cb2d 100644 --- a/spec/features/merge_request/user_sees_deployment_widget_spec.rb +++ b/spec/features/merge_request/user_sees_deployment_widget_spec.rb @@ -38,7 +38,7 @@ describe 'Merge request > User sees deployment widget', :js do end it 'does start build when stop button clicked' do - accept_confirm { click_button('Stop environment') } + accept_confirm { find('.js-stop-env').click } expect(page).to have_content('close_app') end @@ -47,7 +47,7 @@ describe 'Merge request > User sees deployment widget', :js do let(:role) { :reporter } it 'does not show stop button' do - expect(page).not_to have_button('Stop environment') + expect(page).not_to have_selector('.js-stop-env') end end end diff --git a/spec/javascripts/vue_mr_widget/components/deployment_spec.js b/spec/javascripts/vue_mr_widget/components/deployment_spec.js index 3d44af11153..2f1bd00fa10 100644 --- a/spec/javascripts/vue_mr_widget/components/deployment_spec.js +++ b/spec/javascripts/vue_mr_widget/components/deployment_spec.js @@ -242,6 +242,10 @@ describe('Deployment component', () => { it('renders information about running deployment', () => { expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain('Deploying to'); }); + + it('renders disabled stop button', () => { + expect(vm.$el.querySelector('.js-stop-env').getAttribute('disabled')).toBe('disabled'); + }); }); describe('success', () => { -- cgit v1.2.1