From cf4cbb018e229b80e8fd0ca427e63f337ef6bdff Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@selenight.nl>
Date: Wed, 10 Aug 2016 22:36:13 -0500
Subject: [PATCH] Rename `can_resolve_conflicts_in_ui?` to
 `conflicts_can_be_resolved_in_ui?`

---
 .../projects/merge_requests_controller.rb        |  2 +-
 app/models/merge_request.rb                      | 12 +++++++-----
 .../widget/open/_conflicts.html.haml             |  2 +-
 spec/models/merge_request_spec.rb                | 16 ++++++++--------
 4 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 2edd76de4c4..9d3a2addcde 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -135,7 +135,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
       format.html { define_discussion_vars }
 
       format.json do
-        if @merge_request.can_resolve_conflicts_in_ui?
+        if @merge_request.conflicts_can_be_resolved_in_ui?
           render json: @merge_request.conflicts
         else
           render json: {
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 630d31a5d5c..b41d3b6891a 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -720,14 +720,16 @@ class MergeRequest < ActiveRecord::Base
     @conflicts ||= Gitlab::Conflict::FileCollection.new(self)
   end
 
-  def can_resolve_conflicts_in_ui?
-    return false unless cannot_be_merged?
-    return false unless has_complete_diff_refs?
+  def conflicts_can_be_resolved_in_ui?
+    return @conflicts_can_be_resolved_in_ui if defined?(@conflicts_can_be_resolved_in_ui)
+
+    return @conflicts_can_be_resolved_in_ui = false unless cannot_be_merged?
+    return @conflicts_can_be_resolved_in_ui = false unless has_complete_diff_refs?
 
     begin
-      conflicts.files.each(&:lines)
+      @conflicts_can_be_resolved_in_ui = conflicts.files.each(&:lines)
     rescue Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
-      false
+      @conflicts_can_be_resolved_in_ui = false
     end
   end
 end
diff --git a/app/views/projects/merge_requests/widget/open/_conflicts.html.haml b/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
index 582a82c7a71..bedf45fb89d 100644
--- a/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
+++ b/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
@@ -4,7 +4,7 @@
 
 %p
   Please
-  - if @merge_request.can_resolve_conflicts_in_ui?
+  - if @merge_request.conflicts_can_be_resolved_in_ui?
     = link_to "resolve these conflicts", conflicts_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
     or
   - if @merge_request.can_be_merged_via_command_line_by?(current_user)
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index b4741bd3bcb..a9d8081656d 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -742,7 +742,7 @@ describe MergeRequest, models: true do
     end
   end
 
-  describe '#can_resolve_conflicts_in_ui?' do
+  describe '#conflicts_can_be_resolved_in_ui?' do
     def create_merge_request(source_branch)
       create(:merge_request, source_branch: source_branch, target_branch: 'conflict-start') do |mr|
         mr.mark_as_unmergeable
@@ -753,44 +753,44 @@ describe MergeRequest, models: true do
       merge_request = create_merge_request('master')
       merge_request.mark_as_mergeable
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a falsey value when the MR does not support new diff notes' do
       merge_request = create_merge_request('conflict-resolvable')
       merge_request.merge_request_diff.update_attributes(start_commit_sha: nil)
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a falsey value when the conflicts contain a large file' do
       merge_request = create_merge_request('conflict-too-large')
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a falsey value when the conflicts contain a binary file' do
       merge_request = create_merge_request('conflict-binary-file')
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a falsey value when the conflicts contain a file with ambiguous conflict markers' do
       merge_request = create_merge_request('conflict-contains-conflict-markers')
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a falsey value when the conflicts contain a file edited in one branch and deleted in another' do
       merge_request = create_merge_request('conflict-missing-side')
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_falsey
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
     end
 
     it 'returns a truthy value when the conflicts are resolvable in the UI' do
       merge_request = create_merge_request('conflict-resolvable')
 
-      expect(merge_request.can_resolve_conflicts_in_ui?).to be_truthy
+      expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_truthy
     end
   end
 end
-- 
GitLab