summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-09-16 10:16:21 +0200
committerRémy Coutable <remy@rymai.me>2016-09-16 10:16:21 +0200
commit73269b587cb3542a99a356984b3803d232d4b161 (patch)
tree1b8fa0e91007a71322e36983659778655336ebd0
parent1038ef54d0405ae08eb3f413f936197f0775987b (diff)
downloadgitlab-ce-22246-actionview-template-error-undefined-method-each-for-nil-nilclass.tar.gz
MergeRequest#environments now returns an empty array when diff_head_commit is nil22246-actionview-template-error-undefined-method-each-for-nil-nilclass
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--spec/models/merge_request_spec.rb20
2 files changed, 15 insertions, 7 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index f7d1253d957..75f48fd4ba5 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -652,7 +652,7 @@ class MergeRequest < ActiveRecord::Base
end
def environments
- return unless diff_head_commit
+ return [] unless diff_head_commit
target_project.environments.select do |environment|
environment.includes_commit?(diff_head_commit)
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 3b815ded2d3..06feeb1bbba 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -703,16 +703,24 @@ describe MergeRequest, models: true do
describe "#environments" do
let(:project) { create(:project) }
- let!(:environment) { create(:environment, project: project) }
- let!(:environment1) { create(:environment, project: project) }
- let!(:environment2) { create(:environment, project: project) }
let(:merge_request) { create(:merge_request, source_project: project) }
it 'selects deployed environments' do
- create(:deployment, environment: environment, sha: project.commit('master').id)
- create(:deployment, environment: environment1, sha: project.commit('feature').id)
+ environments = create_list(:environment, 3, project: project)
+ create(:deployment, environment: environments.first, sha: project.commit('master').id)
+ create(:deployment, environment: environments.second, sha: project.commit('feature').id)
- expect(merge_request.environments).to eq [environment]
+ expect(merge_request.environments).to eq [environments.first]
+ end
+
+ context 'without a diff_head_commit' do
+ before do
+ expect(merge_request).to receive(:diff_head_commit).and_return(nil)
+ end
+
+ it 'returns an empty array' do
+ expect(merge_request.environments).to be_empty
+ end
end
end