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:
Diffstat (limited to 'spec/services/ci/deployments/destroy_service_spec.rb')
-rw-r--r--spec/services/ci/deployments/destroy_service_spec.rb65
1 files changed, 65 insertions, 0 deletions
diff --git a/spec/services/ci/deployments/destroy_service_spec.rb b/spec/services/ci/deployments/destroy_service_spec.rb
new file mode 100644
index 00000000000..60a57c05728
--- /dev/null
+++ b/spec/services/ci/deployments/destroy_service_spec.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe ::Ci::Deployments::DestroyService do
+ let_it_be(:project) { create(:project, :repository) }
+
+ let(:environment) { create(:environment, project: project) }
+ let(:commits) { project.repository.commits(nil, { limit: 3 }) }
+ let!(:deploy) do
+ create(
+ :deployment,
+ :success,
+ project: project,
+ environment: environment,
+ deployable: nil,
+ sha: commits[2].sha
+ )
+ end
+
+ let!(:running_deploy) do
+ create(
+ :deployment,
+ :running,
+ project: project,
+ environment: environment,
+ deployable: nil,
+ sha: commits[1].sha
+ )
+ end
+
+ let!(:old_deploy) do
+ create(
+ :deployment,
+ :success,
+ project: project,
+ environment: environment,
+ deployable: nil,
+ sha: commits[0].sha,
+ finished_at: 1.year.ago
+ )
+ end
+
+ let(:user) { project.first_owner }
+
+ subject { described_class.new(project, user) }
+
+ context 'when deleting a deployment' do
+ it 'delete is accepted for old deployment' do
+ expect(subject.execute(old_deploy)).to be_success
+ end
+
+ it 'does not delete a running deployment' do
+ response = subject.execute(running_deploy)
+ expect(response).to be_an_error
+ expect(response.message).to eq("Cannot destroy running deployment")
+ end
+
+ it 'does not delete the last deployment' do
+ response = subject.execute(deploy)
+ expect(response).to be_an_error
+ expect(response.message).to eq("Deployment currently deployed to environment")
+ end
+ end
+end