summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-04-12 17:07:37 +0000
committerStan Hu <stanhu@gmail.com>2019-04-12 17:07:37 +0000
commit6fbfa0607662197817dec0698362271a7b432e6d (patch)
tree7a84ca25921ae62ff3fbe84e1d5610c0fdd7f19d
parentc59f68e8d11aeaf7d6d4d129a077929913da29ce (diff)
parent0723df5286498593c43f0a5bdb78e8ab0f9b2db8 (diff)
downloadgitlab-ce-6fbfa0607662197817dec0698362271a7b432e6d.tar.gz
Merge branch '11124-update-deployment-service-fails-if-project-is-nil' into 'master'
Always return the deployment in the UpdateDeploymentService#execute method Closes gitlab-ee#11124 See merge request gitlab-org/gitlab-ce!27322
-rw-r--r--app/services/update_deployment_service.rb2
-rw-r--r--changelogs/unreleased/11124-update-deployment-service-fails-if-project-is-nil.yml5
-rw-r--r--spec/services/update_deployment_service_spec.rb37
3 files changed, 33 insertions, 11 deletions
diff --git a/app/services/update_deployment_service.rb b/app/services/update_deployment_service.rb
index aa7fcca1e2a..49a7d0178f4 100644
--- a/app/services/update_deployment_service.rb
+++ b/app/services/update_deployment_service.rb
@@ -27,6 +27,8 @@ class UpdateDeploymentService
deployment.tap(&:update_merge_request_metrics!)
end
+
+ deployment
end
private
diff --git a/changelogs/unreleased/11124-update-deployment-service-fails-if-project-is-nil.yml b/changelogs/unreleased/11124-update-deployment-service-fails-if-project-is-nil.yml
new file mode 100644
index 00000000000..355743f4cb0
--- /dev/null
+++ b/changelogs/unreleased/11124-update-deployment-service-fails-if-project-is-nil.yml
@@ -0,0 +1,5 @@
+---
+title: Always return the deployment in the UpdateDeploymentService#execute method
+merge_request: 27322
+author:
+type: fixed
diff --git a/spec/services/update_deployment_service_spec.rb b/spec/services/update_deployment_service_spec.rb
index e1643233321..c664bac39fc 100644
--- a/spec/services/update_deployment_service_spec.rb
+++ b/spec/services/update_deployment_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe UpdateDeploymentService do
let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
let(:options) { { name: 'production' } }
let(:job) do
@@ -15,24 +16,22 @@ describe UpdateDeploymentService do
project: project)
end
- let(:project) { create(:project, :repository) }
- let(:environment) { deployment.environment }
let(:deployment) { job.deployment }
- let(:service) { described_class.new(deployment) }
+ let(:environment) { deployment.environment }
+
+ subject(:service) { described_class.new(deployment) }
before do
job.success! # Create/Succeed deployment
end
describe '#execute' do
- subject { service.execute }
-
let(:store) { Gitlab::EtagCaching::Store.new }
it 'invalidates the environment etag cache' do
old_value = store.get(environment.etag_cache_key)
- subject
+ service.execute
expect(store.get(environment.etag_cache_key)).not_to eq(old_value)
end
@@ -42,14 +41,30 @@ describe UpdateDeploymentService do
.to receive(:create_ref)
.with(deployment.ref, deployment.send(:ref_path))
- subject
+ service.execute
end
it 'updates merge request metrics' do
expect_any_instance_of(Deployment)
.to receive(:update_merge_request_metrics!)
- subject
+ service.execute
+ end
+
+ it 'returns the deployment' do
+ expect(subject.execute).to eq(deployment)
+ end
+
+ it 'returns the deployment when could not save the environment' do
+ allow(environment).to receive(:save).and_return(false)
+
+ expect(subject.execute).to eq(deployment)
+ end
+
+ it 'returns the deployment when environment is stopped' do
+ allow(environment).to receive(:stopped?).and_return(true)
+
+ expect(subject.execute).to eq(deployment)
end
context 'when start action is defined' do
@@ -61,7 +76,7 @@ describe UpdateDeploymentService do
end
it 'makes environment available' do
- subject
+ service.execute
expect(environment.reload).to be_available
end
@@ -80,11 +95,11 @@ describe UpdateDeploymentService do
end
it 'does not create a new environment' do
- expect { subject }.not_to change { Environment.count }
+ expect { subject.execute }.not_to change { Environment.count }
end
it 'updates external url' do
- subject
+ subject.execute
expect(subject.environment.name).to eq('review-apps/master')
expect(subject.environment.external_url).to eq('http://master.review-apps.gitlab.com')