提交 b5e0527c 编写于 作者: S Shinya Maeda

Fix spec

上级 f78a5e96
......@@ -8,6 +8,8 @@ module Deployments
def perform(deployment_id)
Deployment.find_by_id(deployment_id).try do |deployment|
break unless deployment.success?
UpdateDeploymentService.new(deployment).execute
end
end
......
......@@ -158,9 +158,10 @@ describe 'Environment' do
end
let(:deployment) do
create(:deployment, :success, environment: environment,
deployable: build,
on_stop: 'close_app')
create(:deployment, :success,
environment: environment,
deployable: build,
on_stop: 'close_app')
end
context 'when user has ability to stop environment' do
......
......@@ -18,6 +18,7 @@ describe Ci::Build do
it { is_expected.to belong_to(:trigger_request) }
it { is_expected.to belong_to(:erased_by) }
it { is_expected.to have_many(:trace_sections)}
it { is_expected.to have_one(:deployment) }
it { is_expected.to have_one(:runner_session)}
it { is_expected.to validate_presence_of(:ref) }
it { is_expected.to respond_to(:has_trace?) }
......@@ -810,34 +811,6 @@ describe Ci::Build do
end
end
describe '.deployment' do
subject { build.deployment }
context 'when there is a deployment record with created status' do
let!(:deployment) { create(:deployment, deployable: build, project: project) }
it 'returns the record' do
is_expected.to eq(deployment)
end
end
context 'when there is a deployment record with running status' do
let!(:deployment) { create(:deployment, :running, deployable: build, project: project) }
it 'returns the record' do
is_expected.to eq(deployment)
end
end
context 'when there is a deployment record with success status' do
let!(:deployment) { create(:deployment, :success, deployable: build, project: project) }
it 'returns the record' do
is_expected.to eq(deployment)
end
end
end
describe 'state transition as a deployable' do
let!(:build) { create(:ci_build, :start_review_app) }
let(:deployment) { build.deployment }
......@@ -910,21 +883,17 @@ describe Ci::Build do
is_expected.to eq('stop_review_app')
end
end
end
describe 'deployment' do
describe '#deployment' do
subject { build.deployment }
context 'when a job does not have environment information' do
let(:build) { create(:ci_build) }
context 'when a deployment is created' do
let!(:deployment) { create(:deployment, deployable: build) }
it 'returns the deployment' do
is_expected.to eq(deployment)
end
it 'returns nil' do
is_expected.to be_nil
end
end
end
describe 'deployment' do
describe '#has_deployment?' do
subject { build.has_deployment? }
......
......@@ -5,13 +5,13 @@ describe Deployable do
let(:deployment) { job.deployment }
let(:environment) { deployment&.environment }
before do
job.reload
end
context 'when the deployable object will deploy to production' do
let!(:job) { create(:ci_build, :start_review_app) }
before do
job.reload
end
it 'creates a deployment and environment record' do
expect(deployment.project).to eq(job.project)
expect(deployment.ref).to eq(job.ref)
......@@ -24,6 +24,15 @@ describe Deployable do
end
end
context 'when the deployable object has already had a deployment' do
let!(:job) { create(:ci_build, :start_review_app, deployment: race_deployment) }
let!(:race_deployment) { create(:deployment, :success) }
it 'does not create a new deployment' do
expect(deployment).to eq(race_deployment)
end
end
context 'when the deployable object will not deploy' do
let!(:job) { create(:ci_build) }
......
......@@ -85,7 +85,7 @@ module CycleAnalyticsHelpers
raise ArgumentError
end
dummy_job.success!
dummy_job.success! # State machine automatically update associated deployment/environment record
end
def dummy_production_job(user, project)
......
......@@ -4,38 +4,47 @@ describe BuildSuccessWorker do
describe '#perform' do
subject { described_class.new.perform(build.id) }
before do
allow_any_instance_of(Deployment).to receive(:create_ref)
end
context 'when build exists' do
context 'when deployment was not created when build was created because of transition period' do
context 'when deployment was not created with the build creation' do # An edge case during the transition period
let!(:build) { create(:ci_build, :deploy_to_production) }
before do
allow_any_instance_of(Deployment).to receive(:create_ref)
Deployment.delete_all
build.reload
end
context 'when build belogs to the environment' do
let!(:build) { create(:ci_build, :deploy_to_production) }
it 'creates a successful deployment' do
expect(build).not_to be_has_deployment
before do
Deployment.delete_all
end
subject
it 'creates a successful deployment' do
expect(build).not_to be_has_deployment
build.reload
expect(build).to be_has_deployment
expect(build.deployment).to be_success
end
end
context 'when deployment was created with the build creation' do # Counter part of the above edge case
let!(:build) { create(:ci_build, :deploy_to_production) }
subject
it 'does not create a new deployment' do
expect(build).to be_has_deployment
build.reload
expect(build).to be_has_deployment
expect(build.deployment).to be_success
end
expect { subject }.not_to change { Deployment.count }
end
end
context 'when build is not associated with project' do
let!(:build) { create(:ci_build, project: nil) }
context 'when build is not associated with project' do
let!(:build) { create(:ci_build, project: nil) }
it 'does not create deployment' do
subject
it 'does not create deployment' do
subject
expect(build.reload).not_to be_has_deployment
end
expect(build.reload).not_to be_has_deployment
end
end
end
......
......@@ -3,8 +3,8 @@ require 'spec_helper'
describe Deployments::SuccessWorker do
subject { described_class.new.perform(deployment&.id) }
context 'when deploy record exists' do
let(:deployment) { create(:deployment) }
context 'when successful deployment' do
let(:deployment) { create(:deployment, :success) }
it 'executes UpdateDeploymentService' do
expect(UpdateDeploymentService)
......@@ -14,10 +14,20 @@ describe Deployments::SuccessWorker do
end
end
context 'when canceled deployment' do
let(:deployment) { create(:deployment, :canceled) }
it 'does not execute UpdateDeploymentService' do
expect(UpdateDeploymentService).not_to receive(:new)
subject
end
end
context 'when deploy record does not exist' do
let(:deployment) { nil }
it 'executes UpdateDeploymentService' do
it 'does not execute UpdateDeploymentService' do
expect(UpdateDeploymentService).not_to receive(:new)
subject
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册