From 93f2d6ee69837e135dea4973c80b7197678cbc89 Mon Sep 17 00:00:00 2001
From: Robert May <rmay@gitlab.com>
Date: Wed, 3 Feb 2021 13:03:00 +0000
Subject: [PATCH] Lower allocations in _collapsed partial

---
 app/helpers/diff_helper.rb                    | 11 ++++++++++
 .../diffs/viewers/_collapsed.html.haml        |  4 +---
 spec/helpers/diff_helper_spec.rb              | 20 +++++++++++++++++++
 3 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index 4d748ac5bf8..49c49bb350d 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -203,6 +203,17 @@ module DiffHelper
     set_secure_cookie(:diff_view, params.delete(:view), type: CookiesHelper::COOKIE_TYPE_PERMANENT) if params[:view].present?
   end
 
+  def collapsed_diff_url(diff_file)
+    url_for(
+      safe_params.merge(
+        action: :diff_for_path,
+        old_path: diff_file.old_path,
+        new_path: diff_file.new_path,
+        file_identifier: diff_file.file_identifier
+      )
+    )
+  end
+
   private
 
   def diff_btn(title, name, selected)
diff --git a/app/views/projects/diffs/viewers/_collapsed.html.haml b/app/views/projects/diffs/viewers/_collapsed.html.haml
index 94dcda38bd6..02f499144c0 100644
--- a/app/views/projects/diffs/viewers/_collapsed.html.haml
+++ b/app/views/projects/diffs/viewers/_collapsed.html.haml
@@ -1,5 +1,3 @@
-- diff_file = viewer.diff_file
-- url = url_for(safe_params.merge(action: :diff_for_path, old_path: diff_file.old_path, new_path: diff_file.new_path, file_identifier: diff_file.file_identifier))
-.nothing-here-block.diff-collapsed{ data: { diff_for_path: url } }
+.nothing-here-block.diff-collapsed{ data: { diff_for_path: collapsed_diff_url(viewer.diff_file) } }
   = _("This diff is collapsed.")
   %button.click-to-expand.btn.btn-link= _("Click to expand it.")
diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb
index d04d97e9e6b..4bc12aef755 100644
--- a/spec/helpers/diff_helper_spec.rb
+++ b/spec/helpers/diff_helper_spec.rb
@@ -358,4 +358,24 @@ RSpec.describe DiffHelper do
       expect(diff_file_path_text(diff_file, max: 10)).to eq("...open.rb")
     end
   end
+
+  describe "#collapsed_diff_url" do
+    let(:params) do
+      {
+        controller: "projects/commit",
+        action: "show",
+        namespace_id: "foo",
+        project_id: "bar",
+        id: commit.sha
+      }
+    end
+
+    subject { helper.collapsed_diff_url(diff_file) }
+
+    it "returns a valid URL" do
+      allow(helper).to receive(:safe_params).and_return(params)
+
+      expect(subject).to match(/foo\/bar\/-\/commit\/#{commit.sha}\/diff_for_path/)
+    end
+  end
 end
-- 
2.30.9