Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 12:08:52 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 12:08:52 +0300
commit53ae6b7e3f83591ad251a3f771f5bf3b8cf087ba (patch)
tree5180b96d6a84f36a515cedfa8e81d72de5ccf4fb /spec/services/deployments
parentcfe63cce6a90a1c70397c1b9f6d90480f25cae0a (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/deployments')
-rw-r--r--spec/services/deployments/older_deployments_drop_service_spec.rb78
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/services/deployments/older_deployments_drop_service_spec.rb b/spec/services/deployments/older_deployments_drop_service_spec.rb
new file mode 100644
index 00000000000..44e9af07e46
--- /dev/null
+++ b/spec/services/deployments/older_deployments_drop_service_spec.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Deployments::OlderDeploymentsDropService do
+ let(:environment) { create(:environment) }
+ let(:deployment) { create(:deployment, environment: environment) }
+ let(:service) { described_class.new(deployment) }
+
+ describe '#execute' do
+ subject { service.execute }
+
+ shared_examples 'it does not drop any build' do
+ it do
+ expect { subject }.to not_change(Ci::Build.failed, :count)
+ end
+ end
+
+ context 'when deployment is nil' do
+ let(:deployment) { nil }
+
+ it_behaves_like 'it does not drop any build'
+ end
+
+ context 'when a deployment is passed in' do
+ context 'and there is no active deployment for the related environment' do
+ let(:deployment) { create(:deployment, :canceled, environment: environment) }
+ let(:deployment2) { create(:deployment, :canceled, environment: environment) }
+
+ before do
+ deployment
+ deployment2
+ end
+
+ it_behaves_like 'it does not drop any build'
+ end
+
+ context 'and there are active deployment for the related environment' do
+ let(:deployment) { create(:deployment, :running, environment: environment) }
+ let(:deployment2) { create(:deployment, :running, environment: environment) }
+
+ context 'and there is no older deployment than "deployment"' do
+ before do
+ deployment
+ deployment2
+ end
+
+ it_behaves_like 'it does not drop any build'
+ end
+
+ context 'and there is an older deployment than "deployment"' do
+ let(:older_deployment) { create(:deployment, :running, environment: environment) }
+
+ before do
+ older_deployment
+ deployment
+ deployment2
+ end
+
+ it 'drops that older deployment' do
+ deployable = older_deployment.deployable
+ expect(deployable.failed?).to be_falsey
+
+ subject
+
+ expect(deployable.reload.failed?).to be_truthy
+ end
+
+ context 'and there is no deployable for that older deployment' do
+ let(:older_deployment) { create(:deployment, :running, environment: environment, deployable: nil) }
+
+ it_behaves_like 'it does not drop any build'
+ end
+ end
+ end
+ end
+ end
+end