From 0b89500cfe986c956f2b487d54a6b593031d794c Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Wed, 9 Nov 2016 15:57:30 +0000 Subject: [PATCH 1/9] Makes stop button visible in environment page --- app/views/projects/environments/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index bcac73d3698..da8200a5531 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -11,7 +11,7 @@ = render 'projects/environments/external_url', environment: @environment - if can?(current_user, :update_environment, @environment) = link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn' - - if can?(current_user, :create_deployment, @environment) && @environment.stoppable? + - if can?(current_user, :create_deployment, @environment) = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post .deployments-container From 13a680e343bdcd905c9134c57202fdec7d436d96 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Wed, 9 Nov 2016 16:02:14 +0000 Subject: [PATCH 2/9] Adds CHANGELOG entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8250b9b5cdb..1c85d4aac44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,6 +93,7 @@ entry. - Return conflict error in label API when title is taken by group label. !7014 - Reduce the overhead to calculate number of open/closed issues and merge requests within the group or project. !7123 - Fix builds tab visibility. !7178 +- Fix delete environment missing button. !7379 - Fix project features default values. !7181 ## 8.13.3 (2016-11-02) From 1494abe982583c564969baaba7daa251ef333156 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 10 Nov 2016 13:59:26 +0100 Subject: [PATCH 3/9] Allow to stop any environment --- .../projects/environments_controller.rb | 10 ++++-- .../projects/merge_requests_controller.rb | 2 +- app/models/environment.rb | 13 ++++--- app/serializers/environment_entity.rb | 2 +- .../projects/environments/_stop.html.haml | 2 +- .../projects/environments/show.html.haml | 2 +- spec/features/environments_spec.rb | 22 +++++++++--- spec/models/environment_spec.rb | 34 +++++++++++++++---- 8 files changed, 66 insertions(+), 21 deletions(-) diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index ea22b2dcc15..bc66823dfc4 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -47,10 +47,14 @@ class Projects::EnvironmentsController < Projects::ApplicationController end def stop - return render_404 unless @environment.stoppable? + return render_404 unless @environment.available? - new_action = @environment.stop!(current_user) - redirect_to polymorphic_path([project.namespace.becomes(Namespace), project, new_action]) + stop_action = @environment.run_stop!(current_user) + if stop_action + redirect_to polymorphic_path([project.namespace.becomes(Namespace), project, stop_action]) + else + redirect_to namespace_project_environment_path(project.namespace, project, @environment) + end end private diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 9f104d903cc..ccba37c9c5c 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -436,7 +436,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController deployment = environment.first_deployment_for(@merge_request.diff_head_commit) stop_url = - if environment.stoppable? && can?(current_user, :create_deployment, environment) + if environment.can_run_stop_action? && can?(current_user, :create_deployment, environment) stop_namespace_project_environment_path(project.namespace, project, environment) end diff --git a/app/models/environment.rb b/app/models/environment.rb index 73f415c0ef0..5c662bbab87 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -85,13 +85,18 @@ class Environment < ActiveRecord::Base external_url.gsub(/\A.*?:\/\//, '') end - def stoppable? + def can_run_stop_action? available? && stop_action.present? end - def stop!(current_user) - return unless stoppable? + def run_stop!(current_user) + return unless available? - stop_action.play(current_user) + if stop_action.present? + stop_action.play(current_user) + else + stop + nil + end end end diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb index ee4392cc46d..bfccfd8bb7c 100644 --- a/app/serializers/environment_entity.rb +++ b/app/serializers/environment_entity.rb @@ -7,7 +7,7 @@ class EnvironmentEntity < Grape::Entity expose :external_url expose :environment_type expose :last_deployment, using: DeploymentEntity - expose :stoppable? + expose :can_run_stop_action? expose :environment_url do |environment| namespace_project_environment_url( diff --git a/app/views/projects/environments/_stop.html.haml b/app/views/projects/environments/_stop.html.haml index 69848123c17..b78ad7ee2c7 100644 --- a/app/views/projects/environments/_stop.html.haml +++ b/app/views/projects/environments/_stop.html.haml @@ -1,4 +1,4 @@ -- if can?(current_user, :create_deployment, environment) && environment.stoppable? +- if can?(current_user, :create_deployment, environment) && environment.can_run_stop_action? .inline = link_to stop_namespace_project_environment_path(@project.namespace, @project, environment), method: :post, class: 'btn stop-env-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to stop this environment?' } do diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index da8200a5531..992d98cdd96 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -11,7 +11,7 @@ = render 'projects/environments/external_url', environment: @environment - if can?(current_user, :update_environment, @environment) = link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn' - - if can?(current_user, :create_deployment, @environment) + - if can?(current_user, :create_deployment, @environment) && @environment.available? = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post .deployments-container diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index b565586ee14..7c9584f6bf1 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -149,6 +149,24 @@ feature 'Environments', feature: true do scenario 'does show no deployments' do expect(page).to have_content('You don\'t have any deployments right now.') end + + context 'for available environment' do + given(:environment) { create(:environment, project: project, state: :available) } + + scenario 'does allow to stop environment' do + click_link('Stop') + + expect(page).to have_content(environment.name.titleize) + end + end + + context 'for stopped environment' do + given(:environment) { create(:environment, project: project, state: :stopped) } + + scenario 'does not shows stop button' do + expect(page).not_to have_link('Stop') + end + end end context 'with deployments' do @@ -175,10 +193,6 @@ feature 'Environments', feature: true do expect(page).to have_link('Re-deploy') end - scenario 'does not show stop button' do - expect(page).not_to have_link('Stop') - end - context 'with manual action' do given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index a94e6d0165f..b860ba2a26c 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -99,8 +99,8 @@ describe Environment, models: true do end end - describe '#stoppable?' do - subject { environment.stoppable? } + describe '#can_run_stop_action?' do + subject { environment.can_run_stop_action? } context 'when no other actions' do it { is_expected.to be_falsey } @@ -129,17 +129,39 @@ describe Environment, models: true do end end - describe '#stop!' do + describe '#run_stop!' do let(:user) { create(:user) } - subject { environment.stop!(user) } + subject { environment.run_stop!(user) } before do - expect(environment).to receive(:stoppable?).and_call_original + expect(environment).to receive(:available?).and_call_original end context 'when no other actions' do - it { is_expected.to be_nil } + context 'environment is available' do + before do + environment.update(state: :available) + end + + it do + subject + + expect(environment).to be_stopped + end + end + + context 'environment is already stopped' do + before do + environment.update(state: :stopped) + end + + it do + subject + + expect(environment).to be_stopped + end + end end context 'when matching action is defined' do From 5f106512be09b6230080c5cff7eb7a7f896284b9 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Thu, 10 Nov 2016 16:03:43 +0000 Subject: [PATCH 4/9] Adds tests Adds changelog entry in the correct place --- CHANGELOG.md | 1 - changelogs/unreleased/24147-delete-env-button.yml | 4 ++++ spec/features/environments_spec.rb | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/24147-delete-env-button.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c85d4aac44..8250b9b5cdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,7 +93,6 @@ entry. - Return conflict error in label API when title is taken by group label. !7014 - Reduce the overhead to calculate number of open/closed issues and merge requests within the group or project. !7123 - Fix builds tab visibility. !7178 -- Fix delete environment missing button. !7379 - Fix project features default values. !7181 ## 8.13.3 (2016-11-02) diff --git a/changelogs/unreleased/24147-delete-env-button.yml b/changelogs/unreleased/24147-delete-env-button.yml new file mode 100644 index 00000000000..159d9db492f --- /dev/null +++ b/changelogs/unreleased/24147-delete-env-button.yml @@ -0,0 +1,4 @@ +--- +title: Adds back ability to stop all environments +merge_request: 7379 +author: \ No newline at end of file diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index 7c9584f6bf1..eded771201b 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -239,6 +239,14 @@ feature 'Environments', feature: true do end end end + + context 'whitout stop action'do + scenario 'does allow to stop environment' do + click_link('Stop') + + expect(page).to have_content(environment.name.capitalize) + end + end end end end From 9b26a8b6b3bdff6f1f9ca9f844f862ec08fd5ddb Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Thu, 10 Nov 2016 16:07:35 +0000 Subject: [PATCH 5/9] Adds missing new line at the end of the file --- changelogs/unreleased/24147-delete-env-button.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelogs/unreleased/24147-delete-env-button.yml b/changelogs/unreleased/24147-delete-env-button.yml index 159d9db492f..14e80cacbfb 100644 --- a/changelogs/unreleased/24147-delete-env-button.yml +++ b/changelogs/unreleased/24147-delete-env-button.yml @@ -1,4 +1,4 @@ --- title: Adds back ability to stop all environments merge_request: 7379 -author: \ No newline at end of file +author: From 8faabdf7d33b575de11b043cfe6698021d33a973 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Fri, 11 Nov 2016 10:23:44 +0000 Subject: [PATCH 6/9] Fix rubocop error --- spec/features/environments_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index eded771201b..f75b197f4fe 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -240,7 +240,7 @@ feature 'Environments', feature: true do end end - context 'whitout stop action'do + context 'whitout stop action' do scenario 'does allow to stop environment' do click_link('Stop') From 1664354c65c103bd3ad55ebe32e84635bef22a6d Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 6 Feb 2017 16:50:03 +0100 Subject: [PATCH 7/9] Update changes --- .../projects/environments_controller.rb | 3 +- .../projects/merge_requests_controller.rb | 2 +- app/models/environment.rb | 8 +-- app/serializers/environment_entity.rb | 2 +- app/services/ci/stop_environments_service.rb | 3 +- .../projects/environments/_stop.html.haml | 2 +- .../projects/environments/show.html.haml | 2 +- spec/features/environment_spec.rb | 56 +++++++++++-------- spec/models/environment_spec.rb | 8 +-- .../ci/stop_environments_service_spec.rb | 4 +- 10 files changed, 51 insertions(+), 39 deletions(-) diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index a203efc62b8..77877cd262d 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -54,7 +54,8 @@ class Projects::EnvironmentsController < Projects::ApplicationController def stop return render_404 unless @environment.available? - stop_action = @environment.run_stop!(current_user) + stop_action = @environment.stop_with_action!(current_user) + if stop_action redirect_to polymorphic_path([project.namespace.becomes(Namespace), project, stop_action]) else diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 7b6a9427098..6eb542e4bd8 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -451,7 +451,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController deployment = environment.first_deployment_for(@merge_request.diff_head_commit) stop_url = - if environment.can_run_stop_action? && can?(current_user, :create_deployment, environment) + if environment.stoppable? && can?(current_user, :create_deployment, environment) stop_namespace_project_environment_path(project.namespace, project, environment) end diff --git a/app/models/environment.rb b/app/models/environment.rb index 066f57292b8..13c4630c565 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -110,15 +110,15 @@ class Environment < ActiveRecord::Base external_url.gsub(/\A.*?:\/\//, '') end - def can_run_stop_action? + def stop_action? available? && stop_action.present? end - def run_stop!(current_user) + def stop_with_action!(current_user) return unless available? - stop - stop_action.play(current_user) + stop! + stop_action.play(current_user) if stop_action end def actions_for(environment) diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb index 7279de59aa8..5d15eb8d3d3 100644 --- a/app/serializers/environment_entity.rb +++ b/app/serializers/environment_entity.rb @@ -7,7 +7,7 @@ class EnvironmentEntity < Grape::Entity expose :external_url expose :environment_type expose :last_deployment, using: DeploymentEntity - expose :can_run_stop_action? + expose :stoppable? expose :environment_path do |environment| namespace_project_environment_path( diff --git a/app/services/ci/stop_environments_service.rb b/app/services/ci/stop_environments_service.rb index cf590459cb2..a51310c3967 100644 --- a/app/services/ci/stop_environments_service.rb +++ b/app/services/ci/stop_environments_service.rb @@ -8,10 +8,9 @@ module Ci return unless has_ref? environments.each do |environment| - next unless environment.stoppable? next unless can?(current_user, :create_deployment, project) - environment.stop!(current_user) + environment.stop_with_action!(current_user) end end diff --git a/app/views/projects/environments/_stop.html.haml b/app/views/projects/environments/_stop.html.haml index b78ad7ee2c7..69848123c17 100644 --- a/app/views/projects/environments/_stop.html.haml +++ b/app/views/projects/environments/_stop.html.haml @@ -1,4 +1,4 @@ -- if can?(current_user, :create_deployment, environment) && environment.can_run_stop_action? +- if can?(current_user, :create_deployment, environment) && environment.stoppable? .inline = link_to stop_namespace_project_environment_path(@project.namespace, @project, environment), method: :post, class: 'btn stop-env-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to stop this environment?' } do diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index e5cdf8fc603..7036325fff8 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -12,7 +12,7 @@ = render 'projects/environments/external_url', environment: @environment - if can?(current_user, :update_environment, @environment) = link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn' - - if can?(current_user, :create_deployment, @environment) && @environment.available? + - if can?(current_user, :create_deployment, @environment) && @environment.can_stop? = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post .deployments-container diff --git a/spec/features/environment_spec.rb b/spec/features/environment_spec.rb index 511c95b758f..2f49e89b4e4 100644 --- a/spec/features/environment_spec.rb +++ b/spec/features/environment_spec.rb @@ -64,10 +64,6 @@ feature 'Environment', :feature do expect(page).to have_link('Re-deploy') end - scenario 'does not show stop button' do - expect(page).not_to have_link('Stop') - end - scenario 'does not show terminal button' do expect(page).not_to have_terminal_button end @@ -116,26 +112,42 @@ feature 'Environment', :feature do end end - context 'with stop action' do - given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } - given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } + context 'when environment is available' do + context 'with stop action' do + given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } + given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } - scenario 'does show stop button' do - expect(page).to have_link('Stop') - end - - scenario 'does allow to stop environment' do - click_link('Stop') - - expect(page).to have_content('close_app') - end - - context 'for reporter' do - let(:role) { :reporter } - - scenario 'does not show stop button' do - expect(page).not_to have_link('Stop') + scenario 'does show stop button' do + expect(page).to have_link('Stop') end + + scenario 'does allow to stop environment' do + click_link('Stop') + + expect(page).to have_content('close_app') + end + + context 'for reporter' do + let(:role) { :reporter } + + scenario 'does not show stop button' do + expect(page).not_to have_link('Stop') + end + end + end + + context 'without stop action' do + scenario 'does allow to stop environment' do + click_link('Stop') + end + end + end + + context 'when environment is stopped' do + given(:environment) { create(:environment, project: project, state: :stopped) } + + scenario 'does not show stop button' do + expect(page).not_to have_link('Stop') end end end diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index 1ac5e0413ee..ffce6847ff3 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -112,8 +112,8 @@ describe Environment, models: true do end end - describe '#can_run_stop_action?' do - subject { environment.can_run_stop_action? } + describe '#stoppable?' do + subject { environment.stoppable? } context 'when no other actions' do it { is_expected.to be_falsey } @@ -142,10 +142,10 @@ describe Environment, models: true do end end - describe '#run_stop!' do + describe '#stop_with_action!' do let(:user) { create(:user) } - subject { environment.run_stop!(user) } + subject { environment.stop_with_action!(user) } before do expect(environment).to receive(:available?).and_call_original diff --git a/spec/services/ci/stop_environments_service_spec.rb b/spec/services/ci/stop_environments_service_spec.rb index 6f7d1a5d28d..560f83d94f7 100644 --- a/spec/services/ci/stop_environments_service_spec.rb +++ b/spec/services/ci/stop_environments_service_spec.rb @@ -42,10 +42,10 @@ describe Ci::StopEnvironmentsService, services: true do end end - context 'when environment is not stoppable' do + context 'when environment is not stopped' do before do allow_any_instance_of(Environment) - .to receive(:stoppable?).and_return(false) + .to receive(:state).and_return(:stopped) end it 'does not stop environment' do From bc66944248bf62816f830b5769449c2c3a9dbd04 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 7 Feb 2017 13:30:33 +0100 Subject: [PATCH 8/9] Fix stoppable? --- .../environments/components/environment_item.js.es6 | 8 ++++---- app/controllers/projects/merge_requests_controller.rb | 2 +- app/models/deployment.rb | 2 +- app/serializers/environment_entity.rb | 2 +- app/views/projects/environments/_stop.html.haml | 2 +- .../environments/environment_item_spec.js.es6 | 2 +- spec/javascripts/environments/mock_data.js.es6 | 10 +++++----- spec/models/deployment_spec.rb | 4 ++-- spec/models/environment_spec.rb | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/environments/components/environment_item.js.es6 b/app/assets/javascripts/environments/components/environment_item.js.es6 index 521873b14b4..8efeb011ca1 100644 --- a/app/assets/javascripts/environments/components/environment_item.js.es6 +++ b/app/assets/javascripts/environments/components/environment_item.js.es6 @@ -147,12 +147,12 @@ require('./environment_terminal_button'); }, /** - * Returns the value of the `stoppable?` key provided in the response. + * Returns the value of the `stop_action?` key provided in the response. * * @returns {Boolean} */ - isStoppable() { - return this.model['stoppable?']; + hasStopAction() { + return this.model['stop_action?']; }, /** @@ -508,7 +508,7 @@ require('./environment_terminal_button'); -
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 6eb542e4bd8..fedeb344a03 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -451,7 +451,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController deployment = environment.first_deployment_for(@merge_request.diff_head_commit) stop_url = - if environment.stoppable? && can?(current_user, :create_deployment, environment) + if environment.stop_action? && can?(current_user, :create_deployment, environment) stop_namespace_project_environment_path(project.namespace, project, environment) end diff --git a/app/models/deployment.rb b/app/models/deployment.rb index 91d85c2279b..afad001d50f 100644 --- a/app/models/deployment.rb +++ b/app/models/deployment.rb @@ -91,7 +91,7 @@ class Deployment < ActiveRecord::Base @stop_action ||= manual_actions.find_by(name: on_stop) end - def stoppable? + def stop_action? stop_action.present? end diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb index 5d15eb8d3d3..4c017960628 100644 --- a/app/serializers/environment_entity.rb +++ b/app/serializers/environment_entity.rb @@ -7,7 +7,7 @@ class EnvironmentEntity < Grape::Entity expose :external_url expose :environment_type expose :last_deployment, using: DeploymentEntity - expose :stoppable? + expose :stop_action? expose :environment_path do |environment| namespace_project_environment_path( diff --git a/app/views/projects/environments/_stop.html.haml b/app/views/projects/environments/_stop.html.haml index 69848123c17..14a2d627203 100644 --- a/app/views/projects/environments/_stop.html.haml +++ b/app/views/projects/environments/_stop.html.haml @@ -1,4 +1,4 @@ -- if can?(current_user, :create_deployment, environment) && environment.stoppable? +- if can?(current_user, :create_deployment, environment) && environment.stop_action? .inline = link_to stop_namespace_project_environment_path(@project.namespace, @project, environment), method: :post, class: 'btn stop-env-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to stop this environment?' } do diff --git a/spec/javascripts/environments/environment_item_spec.js.es6 b/spec/javascripts/environments/environment_item_spec.js.es6 index 9858f346c83..d87cc0996c9 100644 --- a/spec/javascripts/environments/environment_item_spec.js.es6 +++ b/spec/javascripts/environments/environment_item_spec.js.es6 @@ -119,7 +119,7 @@ describe('Environment item', () => { }, ], }, - 'stoppable?': true, + 'stop_action?': true, environment_path: 'root/ci-folders/environments/31', created_at: '2016-11-07T11:11:16.525Z', updated_at: '2016-11-10T15:55:58.778Z', diff --git a/spec/javascripts/environments/mock_data.js.es6 b/spec/javascripts/environments/mock_data.js.es6 index 58f6fb96afb..80e1cbc6f4d 100644 --- a/spec/javascripts/environments/mock_data.js.es6 +++ b/spec/javascripts/environments/mock_data.js.es6 @@ -50,7 +50,7 @@ const environmentsList = [ }, manual_actions: [], }, - 'stoppable?': true, + 'stop_action?': true, environment_path: '/root/ci-folders/environments/31', created_at: '2016-11-07T11:11:16.525Z', updated_at: '2016-11-07T11:11:16.525Z', @@ -105,7 +105,7 @@ const environmentsList = [ }, manual_actions: [], }, - 'stoppable?': false, + 'stop_action?': false, environment_path: '/root/ci-folders/environments/31', created_at: '2016-11-07T11:11:16.525Z', updated_at: '2016-11-07T11:11:16.525Z', @@ -116,7 +116,7 @@ const environmentsList = [ state: 'available', environment_type: 'review', last_deployment: null, - 'stoppable?': true, + 'stop_action?': true, environment_path: '/root/ci-folders/environments/31', created_at: '2016-11-07T11:11:16.525Z', updated_at: '2016-11-07T11:11:16.525Z', @@ -127,7 +127,7 @@ const environmentsList = [ state: 'available', environment_type: 'review', last_deployment: null, - 'stoppable?': true, + 'stop_action?': true, environment_path: '/root/ci-folders/environments/31', created_at: '2016-11-07T11:11:16.525Z', updated_at: '2016-11-07T11:11:16.525Z', @@ -143,7 +143,7 @@ const environment = { external_url: 'http://production.', environment_type: null, last_deployment: {}, - 'stoppable?': false, + 'stop_action?': false, environment_path: '/root/review-app/environments/4', stop_path: '/root/review-app/environments/4/stop', created_at: '2016-12-16T11:51:04.690Z', diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb index fc4435a2f64..080ff2f3f43 100644 --- a/spec/models/deployment_spec.rb +++ b/spec/models/deployment_spec.rb @@ -77,8 +77,8 @@ describe Deployment, models: true do end end - describe '#stoppable?' do - subject { deployment.stoppable? } + describe '#stop_action?' do + subject { deployment.stop_action? } context 'when no other actions' do let(:deployment) { build(:deployment) } diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index ffce6847ff3..8b57d8600fe 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -112,8 +112,8 @@ describe Environment, models: true do end end - describe '#stoppable?' do - subject { environment.stoppable? } + describe '#stop_action?' do + subject { environment.stop_action? } context 'when no other actions' do it { is_expected.to be_falsey } From 0886b0fe98c640579fa1e4e88a28c9a62b866f2a Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 7 Feb 2017 16:00:44 +0100 Subject: [PATCH 9/9] Fix stop action --- spec/features/environments_spec.rb | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index 010186d77fa..78be7d36f47 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -56,10 +56,8 @@ feature 'Environments page', :feature, :js do context 'for available environment' do given(:environment) { create(:environment, project: project, state: :available) } - scenario 'does allow to stop environment' do - click_link('Stop') - - expect(page).to have_content(environment.name.titleize) + scenario 'does not shows stop button' do + expect(page).not_to have_selector('.stop-env-link') end end @@ -67,7 +65,7 @@ feature 'Environments page', :feature, :js do given(:environment) { create(:environment, project: project, state: :stopped) } scenario 'does not shows stop button' do - expect(page).not_to have_link('Stop') + expect(page).not_to have_selector('.stop-env-link') end end end @@ -186,14 +184,6 @@ feature 'Environments page', :feature, :js do expect(page).not_to have_terminal_button end end - - context 'whitout stop action' do - scenario 'does allow to stop environment' do - click_link('Stop') - - expect(page).to have_content(environment.name.capitalize) - end - end end end end