Skip to content
Snippets Groups Projects
Commit ee6b1854 authored by GitLab Bot's avatar GitLab Bot
Browse files

Add latest changes from gitlab-org/gitlab@master

parent cf85de26
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -53,6 +53,14 @@ describe Deployments::AfterCreateService do
service.execute
end
 
it 'links merge requests to deployment' do
expect_next_instance_of(Deployments::LinkMergeRequestsService, deployment) do |link_mr_service|
expect(link_mr_service).to receive(:execute)
end
service.execute
end
it 'returns the deployment' do
expect(subject.execute).to eq(deployment)
end
Loading
Loading
@@ -237,4 +245,30 @@ describe Deployments::AfterCreateService do
end
end
end
describe '#update_environment' do
it 'links the merge requests' do
double = instance_double(Deployments::LinkMergeRequestsService)
allow(Deployments::LinkMergeRequestsService)
.to receive(:new)
.with(deployment)
.and_return(double)
expect(double).to receive(:execute)
service.update_environment(deployment)
end
context 'when the tracking of merge requests is disabled' do
it 'does nothing' do
stub_feature_flags(deployment_merge_requests: false)
expect(Deployments::LinkMergeRequestsService)
.not_to receive(:new)
service.update_environment(deployment)
end
end
end
end
# frozen_string_literal: true
require 'spec_helper'
describe Deployments::LinkMergeRequestsService do
describe '#execute' do
context 'when the deployment did not succeed' do
it 'does nothing' do
deploy = create(:deployment, :failed)
expect(deploy).not_to receive(:link_merge_requests)
described_class.new(deploy).execute
end
end
context 'when there is a previous deployment' do
it 'links all merge requests merged since the previous deployment' do
deploy1 = create(:deployment, :success, sha: 'foo')
deploy2 = create(
:deployment,
:success,
sha: 'bar',
project: deploy1.project,
environment: deploy1.environment
)
service = described_class.new(deploy2)
expect(service)
.to receive(:link_merge_requests_for_range)
.with('foo', 'bar')
service.execute
end
end
context 'when there are no previous deployments' do
it 'links all merged merge requests' do
deploy = create(:deployment, :success)
service = described_class.new(deploy)
expect(service).to receive(:link_all_merged_merge_requests)
service.execute
end
end
end
describe '#link_merge_requests_for_range' do
it 'links merge requests' do
project = create(:project, :repository)
environment = create(:environment, project: project)
deploy =
create(:deployment, :success, project: project, environment: environment)
mr1 = create(
:merge_request,
:merged,
merge_commit_sha: '1e292f8fedd741b75372e19097c76d327140c312',
source_project: project,
target_project: project
)
mr2 = create(
:merge_request,
:merged,
merge_commit_sha: '2d1db523e11e777e49377cfb22d368deec3f0793',
source_project: project,
target_project: project
)
described_class.new(deploy).link_merge_requests_for_range(
'7975be0116940bf2ad4321f79d02a55c5f7779aa',
'ddd0f15ae83993f5cb66a927a28673882e99100b'
)
expect(deploy.merge_requests).to include(mr1, mr2)
end
end
describe '#link_all_merged_merge_requests' do
it 'links all merged merge requests targeting the deployed branch' do
project = create(:project, :repository)
environment = create(:environment, project: project)
deploy =
create(:deployment, :success, project: project, environment: environment)
mr1 = create(
:merge_request,
:merged,
source_project: project,
target_project: project,
source_branch: 'source1',
target_branch: deploy.ref
)
mr2 = create(
:merge_request,
:merged,
source_project: project,
target_project: project,
source_branch: 'source2',
target_branch: deploy.ref
)
mr3 = create(
:merge_request,
:merged,
source_project: project,
target_project: project,
target_branch: 'foo'
)
described_class.new(deploy).link_all_merged_merge_requests
expect(deploy.merge_requests).to include(mr1, mr2)
expect(deploy.merge_requests).not_to include(mr3)
end
end
end
Loading
Loading
@@ -3,13 +3,55 @@
require 'spec_helper'
 
describe Deployments::UpdateService do
let(:deploy) { create(:deployment, :running) }
let(:service) { described_class.new(deploy, status: 'success') }
let(:deploy) { create(:deployment) }
 
describe '#execute' do
it 'updates the status of a deployment' do
expect(service.execute).to eq(true)
expect(deploy.status).to eq('success')
it 'can update the status to running' do
expect(described_class.new(deploy, status: 'running').execute)
.to be_truthy
expect(deploy).to be_running
end
it 'can update the status to success' do
expect(described_class.new(deploy, status: 'success').execute)
.to be_truthy
expect(deploy).to be_success
end
it 'can update the status to failed' do
expect(described_class.new(deploy, status: 'failed').execute)
.to be_truthy
expect(deploy).to be_failed
end
it 'can update the status to canceled' do
expect(described_class.new(deploy, status: 'canceled').execute)
.to be_truthy
expect(deploy).to be_canceled
end
it 'returns false when the status is not supported' do
expect(described_class.new(deploy, status: 'kittens').execute)
.to be_falsey
end
it 'links merge requests when changing the status to success', :sidekiq_inline do
mr = create(
:merge_request,
:merged,
target_project: deploy.project,
source_project: deploy.project,
target_branch: 'master',
source_branch: 'foo'
)
described_class.new(deploy, status: 'success').execute
expect(deploy.merge_requests).to eq([mr])
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment