From a88b2d3b019cd696404d20f8042a555ec0081143 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Mon, 14 Nov 2016 14:35:29 +0100 Subject: [PATCH] Add feature tests for environments auto-close --- app/models/environment.rb | 1 + spec/features/environments_spec.rb | 42 +++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index 73f415c0ef0..67812b12993 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -92,6 +92,7 @@ class Environment < ActiveRecord::Base def stop!(current_user) return unless stoppable? + stop stop_action.play(current_user) end end diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index 10ca835e6ca..8b34cb13b9d 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -6,8 +6,8 @@ feature 'Environments', feature: true do given(:role) { :developer } background do - login_as(user) project.team << [user, role] + login_as(user) end describe 'when showing environments' do @@ -16,7 +16,7 @@ feature 'Environments', feature: true do given!(:manual) { } before do - visit namespace_project_environments_path(project.namespace, project) + visit_environments(project) end context 'shows two tabs' do @@ -142,7 +142,7 @@ feature 'Environments', feature: true do given!(:manual) { } before do - visit namespace_project_environment_path(project.namespace, project, environment) + visit_environment(environment) end context 'without deployments' do @@ -234,7 +234,7 @@ feature 'Environments', feature: true do describe 'when creating a new environment' do before do - visit namespace_project_environments_path(project.namespace, project) + visit_environments(project) end context 'when logged as developer' do @@ -273,4 +273,38 @@ feature 'Environments', feature: true do end end end + + feature 'auto-close environment when branch deleted' do + given(:project) { create(:project) } + + given!(:environment) do + create(:environment, :with_review_app, project: project, + ref: 'feature') + end + + scenario 'user visits environment page' do + visit_environment(environment) + + expect(page).to have_link('Stop') + end + + scenario 'user deletes the branch with running environment' do + visit namespace_project_branches_path(project.namespace, project) + + page.within('.js-branch-feature') { find('a.btn-remove').click } + visit_environment(environment) + + expect(page).to have_no_link('Stop') + end + end + + def visit_environments(project) + visit namespace_project_environments_path(project.namespace, project) + end + + def visit_environment(environment) + visit namespace_project_environment_path(environment.project.namespace, + environment.project, + environment) + end end