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.rb101
1 files changed, 93 insertions, 8 deletions
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 0a4ee73f3d3..87fa5289795 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -74,6 +74,27 @@ RSpec.describe Deployment do
end
end
+ describe '.for_iid' do
+ subject { described_class.for_iid(project, iid) }
+
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:deployment) { create(:deployment, project: project) }
+
+ let(:iid) { deployment.iid }
+
+ it 'finds the deployment' do
+ is_expected.to contain_exactly(deployment)
+ end
+
+ context 'when iid does not match' do
+ let(:iid) { non_existing_record_id }
+
+ it 'does not find the deployment' do
+ is_expected.to be_empty
+ end
+ end
+ end
+
describe '.for_environment_name' do
subject { described_class.for_environment_name(project, environment_name) }
@@ -142,8 +163,8 @@ RSpec.describe Deployment do
it 'executes Deployments::HooksWorker asynchronously' do
freeze_time do
expect(Deployments::HooksWorker)
- .to receive(:perform_async).with(deployment_id: deployment.id, status: 'running',
- status_changed_at: Time.current)
+ .to receive(:perform_async)
+ .with(deployment_id: deployment.id, status: 'running', status_changed_at: Time.current)
deployment.run!
end
@@ -179,8 +200,8 @@ RSpec.describe Deployment do
it 'executes Deployments::HooksWorker asynchronously' do
freeze_time do
expect(Deployments::HooksWorker)
- .to receive(:perform_async).with(deployment_id: deployment.id, status: 'success',
- status_changed_at: Time.current)
+ .to receive(:perform_async)
+ .with(deployment_id: deployment.id, status: 'success', status_changed_at: Time.current)
deployment.succeed!
end
@@ -209,8 +230,8 @@ RSpec.describe Deployment do
it 'executes Deployments::HooksWorker asynchronously' do
freeze_time do
expect(Deployments::HooksWorker)
- .to receive(:perform_async).with(deployment_id: deployment.id, status: 'failed',
- status_changed_at: Time.current)
+ .to receive(:perform_async)
+ .with(deployment_id: deployment.id, status: 'failed', status_changed_at: Time.current)
deployment.drop!
end
@@ -239,8 +260,8 @@ RSpec.describe Deployment do
it 'executes Deployments::HooksWorker asynchronously' do
freeze_time do
expect(Deployments::HooksWorker)
- .to receive(:perform_async).with(deployment_id: deployment.id, status: 'canceled',
- status_changed_at: Time.current)
+ .to receive(:perform_async)
+ .with(deployment_id: deployment.id, status: 'canceled', status_changed_at: Time.current)
deployment.cancel!
end
@@ -343,6 +364,31 @@ RSpec.describe Deployment do
end
end
+ describe '#older_than_last_successful_deployment?' do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:environment) { create(:environment, project: project) }
+
+ subject { deployment.older_than_last_successful_deployment? }
+
+ context 'when deployment is current deployment' do
+ let(:deployment) { create(:deployment, :success, project: project) }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when deployment is behind current deployment' do
+ let!(:deployment) do
+ create(:deployment, :success, project: project, environment: environment, finished_at: 1.year.ago)
+ end
+
+ let!(:last_deployment) do
+ create(:deployment, :success, project: project, environment: environment)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+ end
+
describe '#success?' do
subject { deployment.success? }
@@ -517,6 +563,16 @@ RSpec.describe Deployment do
end
end
+ describe '.ordered_as_upcoming' do
+ let!(:deployment1) { create(:deployment, status: :running) }
+ let!(:deployment2) { create(:deployment, status: :blocked) }
+ let!(:deployment3) { create(:deployment, status: :created) }
+
+ it 'sorts by ID DESC' do
+ expect(described_class.ordered_as_upcoming).to eq([deployment3, deployment2, deployment1])
+ end
+ end
+
describe 'visible' do
subject { described_class.visible }
@@ -876,6 +932,22 @@ RSpec.describe Deployment do
end
end
+ describe '#build' do
+ let!(:deployment) { create(:deployment) }
+
+ subject { deployment.build }
+
+ it 'retrieves build for the deployment' do
+ is_expected.to eq(deployment.deployable)
+ end
+
+ it 'returns nil when the associated build is not found' do
+ deployment.update!(deployable_id: nil, deployable_type: nil)
+
+ is_expected.to be_nil
+ end
+ end
+
describe '#previous_deployment' do
using RSpec::Parameterized::TableSyntax
@@ -1233,6 +1305,19 @@ RSpec.describe Deployment do
end
end
+ describe '#tags' do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:deployment) { create(:deployment, project: project) }
+
+ subject { deployment.tags }
+
+ it 'will return tags related to this deployment' do
+ expect(project.repository).to receive(:tag_names_contains).with(deployment.sha, limit: 100).and_return(['test'])
+
+ is_expected.to match_array(['test'])
+ end
+ end
+
describe '#valid_sha' do
it 'does not add errors for a valid SHA' do
project = create(:project, :repository)