Skip to content
Snippets Groups Projects
Unverified Commit 1664354c authored by Kamil Trzcińśki's avatar Kamil Trzcińśki
Browse files

Update changes

parent a8825f0c
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -54,7 +54,8 @@ def update
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
Loading
Loading
Loading
Loading
@@ -451,7 +451,7 @@ def ci_environments_status
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
 
Loading
Loading
Loading
Loading
@@ -110,15 +110,15 @@ def formatted_external_url
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)
Loading
Loading
Loading
Loading
@@ -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(
Loading
Loading
Loading
Loading
@@ -8,10 +8,9 @@ def execute(branch_name)
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
 
Loading
Loading
- 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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -64,10 +64,6 @@
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
Loading
Loading
@@ -116,27 +112,43 @@
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 show stop button' do
expect(page).to have_link('Stop')
end
 
scenario 'does allow to stop environment' do
click_link('Stop')
scenario 'does allow to stop environment' do
click_link('Stop')
 
expect(page).to have_content('close_app')
end
expect(page).to have_content('close_app')
end
 
context 'for reporter' do
let(:role) { :reporter }
context 'for reporter' do
let(:role) { :reporter }
 
scenario 'does not show stop button' do
expect(page).not_to have_link('Stop')
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
end
Loading
Loading
Loading
Loading
@@ -112,8 +112,8 @@
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 }
Loading
Loading
@@ -142,10 +142,10 @@
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
Loading
Loading
Loading
Loading
@@ -42,10 +42,10 @@
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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment