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:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-29 18:06:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-29 18:06:43 +0300
commiteac0da9a47f0c7b8b970833d7d5b96cfee057bf7 (patch)
tree7b7865053435c6dcb4e2d945fcf45e309331c91b /spec/models/environment_status_spec.rb
parentb860c6ba2607541e3b5bdf0fc2daaa9ed41a8726 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/environment_status_spec.rb')
-rw-r--r--spec/models/environment_status_spec.rb78
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/models/environment_status_spec.rb b/spec/models/environment_status_spec.rb
index eea81d7c128..0f2c6928820 100644
--- a/spec/models/environment_status_spec.rb
+++ b/spec/models/environment_status_spec.rb
@@ -92,6 +92,84 @@ describe EnvironmentStatus do
end
end
+ describe '.for_deployed_merge_request' do
+ context 'when a merge request has no explicitly linked deployments' do
+ it 'returns the statuses based on the CI pipelines' do
+ mr = create(:merge_request, :merged)
+
+ expect(described_class)
+ .to receive(:after_merge_request)
+ .with(mr, mr.author)
+ .and_return([])
+
+ statuses = described_class.for_deployed_merge_request(mr, mr.author)
+
+ expect(statuses).to eq([])
+ end
+ end
+
+ context 'when a merge request has explicitly linked deployments' do
+ let(:merge_request) { create(:merge_request, :merged) }
+
+ let(:environment) do
+ create(:environment, project: merge_request.target_project)
+ end
+
+ it 'returns the statuses based on the linked deployments' do
+ deploy = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, merge_request.author)
+
+ expect(statuses.length).to eq(1)
+ expect(statuses[0].environment).to eq(environment)
+ expect(statuses[0].merge_request).to eq(merge_request)
+ end
+
+ it 'excludes environments the user can not see' do
+ deploy = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, create(:user))
+
+ expect(statuses).to be_empty
+ end
+
+ it 'excludes deployments that have the status "created"' do
+ deploy = create(
+ :deployment,
+ :created,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, merge_request.author)
+
+ expect(statuses).to be_empty
+ end
+ end
+ end
+
describe '.build_environments_status' do
subject { described_class.send(:build_environments_status, merge_request, user, pipeline) }