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/models/deployment_spec.rb')
-rw-r--r--spec/models/deployment_spec.rb114
1 files changed, 95 insertions, 19 deletions
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 51e1e63da8d..29b37ef7371 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -268,31 +268,69 @@ RSpec.describe Deployment do
end
end
+ context 'when deployment is blocked' do
+ let(:deployment) { create(:deployment, :created) }
+
+ it 'has correct status' do
+ deployment.block!
+
+ expect(deployment).to be_blocked
+ expect(deployment.finished_at).to be_nil
+ end
+
+ it 'does not execute Deployments::LinkMergeRequestWorker asynchronously' do
+ expect(Deployments::LinkMergeRequestWorker).not_to receive(:perform_async)
+
+ deployment.block!
+ end
+
+ it 'does not execute Deployments::HooksWorker' do
+ expect(Deployments::HooksWorker).not_to receive(:perform_async)
+
+ deployment.block!
+ end
+ end
+
describe 'synching status to Jira' do
- let(:deployment) { create(:deployment) }
+ let_it_be(:project) { create(:project, :repository) }
+ let(:deployment) { create(:deployment, project: project) }
let(:worker) { ::JiraConnect::SyncDeploymentsWorker }
- it 'calls the worker on creation' do
- expect(worker).to receive(:perform_async).with(Integer)
+ context 'when Jira Connect subscription does not exist' do
+ it 'does not call the worker' do
+ expect(worker).not_to receive(:perform_async)
- deployment
+ deployment
+ end
end
- it 'does not call the worker for skipped deployments' do
- expect(deployment).to be_present # warm-up, ignore the creation trigger
+ context 'when Jira Connect subscription exists' do
+ before_all do
+ create(:jira_connect_subscription, namespace: project.namespace)
+ end
- expect(worker).not_to receive(:perform_async)
+ it 'calls the worker on creation' do
+ expect(worker).to receive(:perform_async).with(Integer)
- deployment.skip!
- end
+ deployment
+ end
+
+ it 'does not call the worker for skipped deployments' do
+ expect(deployment).to be_present # warm-up, ignore the creation trigger
+
+ expect(worker).not_to receive(:perform_async)
+
+ deployment.skip!
+ end
- %i[run! succeed! drop! cancel!].each do |event|
- context "when we call pipeline.#{event}" do
- it 'triggers a Jira synch worker' do
- expect(worker).to receive(:perform_async).with(deployment.id)
+ %i[run! succeed! drop! cancel!].each do |event|
+ context "when we call pipeline.#{event}" do
+ it 'triggers a Jira synch worker' do
+ expect(worker).to receive(:perform_async).with(deployment.id)
- deployment.send(event)
+ deployment.send(event)
+ end
end
end
end
@@ -448,11 +486,12 @@ RSpec.describe Deployment do
subject { described_class.active }
it 'retrieves the active deployments' do
- deployment1 = create(:deployment, status: :created )
- deployment2 = create(:deployment, status: :running )
- create(:deployment, status: :failed )
- create(:deployment, status: :canceled )
+ deployment1 = create(:deployment, status: :created)
+ deployment2 = create(:deployment, status: :running)
+ create(:deployment, status: :failed)
+ create(:deployment, status: :canceled)
create(:deployment, status: :skipped)
+ create(:deployment, status: :blocked)
is_expected.to contain_exactly(deployment1, deployment2)
end
@@ -512,9 +551,25 @@ RSpec.describe Deployment do
deployment2 = create(:deployment, status: :success)
deployment3 = create(:deployment, status: :failed)
deployment4 = create(:deployment, status: :canceled)
+ deployment5 = create(:deployment, status: :blocked)
+ create(:deployment, status: :skipped)
+
+ is_expected.to contain_exactly(deployment1, deployment2, deployment3, deployment4, deployment5)
+ end
+ end
+
+ describe 'upcoming' do
+ subject { described_class.upcoming }
+
+ it 'retrieves the upcoming deployments' do
+ deployment1 = create(:deployment, status: :running)
+ deployment2 = create(:deployment, status: :blocked)
+ create(:deployment, status: :success)
+ create(:deployment, status: :failed)
+ create(:deployment, status: :canceled)
create(:deployment, status: :skipped)
- is_expected.to contain_exactly(deployment1, deployment2, deployment3, deployment4)
+ is_expected.to contain_exactly(deployment1, deployment2)
end
end
end
@@ -840,6 +895,27 @@ RSpec.describe Deployment do
expect(deploy.update_status('created')).to eq(false)
end
+
+ context 'mapping status to event' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:status, :method) do
+ 'running' | :run!
+ 'success' | :succeed!
+ 'failed' | :drop!
+ 'canceled' | :cancel!
+ 'skipped' | :skip!
+ 'blocked' | :block!
+ end
+
+ with_them do
+ it 'calls the correct method for the given status' do
+ expect(deploy).to receive(method)
+
+ deploy.update_status(status)
+ end
+ end
+ end
end
describe '#sync_status_with' do