From fd9ee1901b44224d41de762dc2b28fc8a4367951 Mon Sep 17 00:00:00 2001
From: Gergely Nagy <forgejo@gergo.csillger.hu>
Date: Fri, 24 May 2024 10:30:38 +0200
Subject: [PATCH] tests: Add a test for code expansion on PRs

This adds a new test case to `TestCompareCodeExpand` to exercise the
case where we're viewing a PR's diff.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
---
 tests/integration/compare_test.go | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/tests/integration/compare_test.go b/tests/integration/compare_test.go
index 50c5b373ae..5d585e061d 100644
--- a/tests/integration/compare_test.go
+++ b/tests/integration/compare_test.go
@@ -18,6 +18,7 @@ import (
 	user_model "code.gitea.io/gitea/models/user"
 	"code.gitea.io/gitea/modules/gitrepo"
 	"code.gitea.io/gitea/modules/optional"
+	"code.gitea.io/gitea/modules/test"
 	repo_service "code.gitea.io/gitea/services/repository"
 	files_service "code.gitea.io/gitea/services/repository/files"
 	"code.gitea.io/gitea/tests"
@@ -262,5 +263,30 @@ func TestCompareCodeExpand(t *testing.T) {
 				assert.True(t, strings.HasPrefix(link, expectedPrefix))
 			}
 		})
+
+		t.Run("code expander targets the repo in a PR", func(t *testing.T) {
+			defer tests.PrintCurrentTest(t)()
+
+			// Create a pullrequest
+			resp := testPullCreate(t, session, forker.Name, repo.Name+"-copy", false, "main", "code-expand", "This is a pull title")
+
+			// Grab the URL for the PR
+			url := test.RedirectURL(resp) + "/files"
+
+			// Visit the PR's diff
+			req := NewRequest(t, "GET", url)
+			resp = session.MakeRequest(t, req, http.StatusOK)
+			htmlDoc := NewHTMLParser(t, resp.Body)
+
+			els := htmlDoc.Find(`button.code-expander-button[hx-get]`)
+
+			// all the links in the comparison should be to the original repo&branch
+			assert.NotZero(t, els.Length())
+			expectedPrefix := fmt.Sprintf("/%s/%s/blob_excerpt/", owner.Name, repo.Name)
+			for i := 0; i < els.Length(); i++ {
+				link := els.Eq(i).AttrOr("hx-get", "")
+				assert.True(t, strings.HasPrefix(link, expectedPrefix))
+			}
+		})
 	})
 }