summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZ.J. van de Weg <zegerjan@gitlab.com>2016-08-03 13:37:39 +0200
committerZ.J. van de Weg <zegerjan@gitlab.com>2016-08-11 21:29:57 +0200
commitb497b0ce3fc3c1882639f9c7d55f7991ce41f15d (patch)
tree353668ef819c38e3e9a208530a36501b4c524313
parent826862d48ef80ddd849b9e3cb05ef37ba7be41e9 (diff)
downloadgitlab-ce-b497b0ce3fc3c1882639f9c7d55f7991ce41f15d.tar.gz
Incorporate feedback
-rw-r--r--CHANGELOG2
-rw-r--r--app/models/deployment.rb4
-rw-r--r--app/models/environment.rb6
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--spec/models/deployment_spec.rb20
-rw-r--r--spec/models/environment_spec.rb10
-rw-r--r--spec/models/merge_request_spec.rb15
-rw-r--r--spec/views/projects/merge_requests/_heading.html.haml_spec.rb6
8 files changed, 56 insertions, 9 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 7fb3ccb09ab..b26216f33eb 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -37,7 +37,7 @@ v 8.11.0 (unreleased)
- Update `timeago` plugin to use multiple string/locale settings
- Remove unused images (ClemMakesApps)
- Limit git rev-list output count to one in forced push check
- - Show deployment status on merge requests
+ - Show deployment status on merge requests with external URLs
- Clean up unused routes (Josef Strzibny)
- Fix issue on empty project to allow developers to only push to protected branches if given permission
- Add green outline to New Branch button. !5447 (winniehell)
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index 67a4f3998ec..19b08f49d96 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -37,10 +37,10 @@ class Deployment < ActiveRecord::Base
deployable.try(:other_actions)
end
- def deployed_to(ref)
+ def deployed_to?(ref)
commit = project.commit(ref)
return false unless commit
- project.repository.merge_base(commit.id, sha) == commit.id
+ project.repository.is_ancestor?(commit.id, sha)
end
end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index f6fdb8d1ecf..7247125f8a0 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -26,9 +26,9 @@ class Environment < ActiveRecord::Base
self.external_url = nil if self.external_url.blank?
end
- def deployed_to?(ref)
- return unless last_deployment
+ def deployed_from?(ref)
+ return false unless last_deployment
- last_deployment.deployed_to(ref)
+ last_deployment.deployed_to?(ref)
end
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 85e4d1f6b51..945b0d76505 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -592,7 +592,7 @@ class MergeRequest < ActiveRecord::Base
def environments
target_project.environments.select do |environment|
- environment.deployed_to?(ref_path)
+ environment.deployed_from?(ref_path)
end
end
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 7df3df4bb9e..107f8b38acf 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -15,4 +15,24 @@ describe Deployment, models: true do
it { is_expected.to validate_presence_of(:ref) }
it { is_expected.to validate_presence_of(:sha) }
+
+ describe '#deployed_to?' do
+ let(:project) { create(:project) }
+ let(:environment) { create(:environment, project: project) }
+ let(:deployment) do
+ create(:deployment, environment: environment, sha: '5f923865dde3436854e9ceb9cdb7815618d4e849')
+ end
+
+ context 'when there is no project commit' do
+ it 'returns false' do
+ expect(deployment.deployed_to?('random-branch')).to be false
+ end
+ end
+
+ context 'when they share the same tree branch' do
+ it 'returns true' do
+ expect(deployment.deployed_to?('HEAD')).to be true
+ end
+ end
+ end
end
diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb
index 8a84ac0a7c7..e65b4f82eff 100644
--- a/spec/models/environment_spec.rb
+++ b/spec/models/environment_spec.rb
@@ -30,4 +30,14 @@ describe Environment, models: true do
expect(env.external_url).to be_nil
end
end
+
+ describe '#deployed_from?' do
+ let(:environment) { create(:environment) }
+
+ context 'without a last deployment' do
+ it "returns false" do
+ expect(environment.deployed_from?('HEAD')).to be false
+ end
+ end
+ end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 3270b877c1a..0727dd29951 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -674,6 +674,21 @@ describe MergeRequest, models: true do
end
end
+ describe "#environments" do
+ let(:project) { create(:project) }
+
+ let!(:deployment) { create(:deployment, environment: environment, sha: '5f923865dde3436854e9ceb9cdb7815618d4e849') }
+
+ let!(:environment) { create(:environment, project: project) }
+ let!(:environment1) { create(:environment, project: project) }
+
+ let(:merge_request) { create(:merge_request, source_project: project) }
+
+ it 'selects deployed environments' do
+ expect(merge_request.environments).to eq [environment]
+ end
+ end
+
describe "#reload_diff" do
let(:note) { create(:diff_note_on_merge_request, project: subject.project, noteable: subject) }
diff --git a/spec/views/projects/merge_requests/_heading.html.haml_spec.rb b/spec/views/projects/merge_requests/_heading.html.haml_spec.rb
index b78c9c7e9ef..843a496f4c3 100644
--- a/spec/views/projects/merge_requests/_heading.html.haml_spec.rb
+++ b/spec/views/projects/merge_requests/_heading.html.haml_spec.rb
@@ -7,8 +7,10 @@ describe 'projects/merge_requests/widget/_heading' do
let(:project) { merge_request.target_project }
let(:merge_request) { create(:merge_request, :merged) }
let(:environment) { create(:environment, project: project) }
- let!(:deployment) { create(:deployment, environment: environment,
- sha: 'a5391128b0ef5d21df5dd23d98557f4ef12fae20') }
+ let!(:deployment) do
+ create(:deployment, environment: environment,
+ sha: 'a5391128b0ef5d21df5dd23d98557f4ef12fae20')
+ end
before do
assign(:merge_request, merge_request)