From 60a9df1908ad861e0be1b2659b5827cb7b2ee3b6 Mon Sep 17 00:00:00 2001
From: 0ko <0ko@noreply.codeberg.org>
Date: Thu, 21 Mar 2024 18:18:36 +0500
Subject: [PATCH] Add test for pull summary

---
 tests/integration/pull_summary_test.go | 65 ++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 tests/integration/pull_summary_test.go

diff --git a/tests/integration/pull_summary_test.go b/tests/integration/pull_summary_test.go
new file mode 100644
index 0000000000..75c12720bf
--- /dev/null
+++ b/tests/integration/pull_summary_test.go
@@ -0,0 +1,65 @@
+// Copyright 2024 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+	"net/http"
+	"net/url"
+	"path"
+	"strings"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestPullSummaryCommits(t *testing.T) {
+	onGiteaRun(t, func(t *testing.T, u *url.URL) {
+		testUser := "user2"
+		testRepo := "repo1"
+		branchOld := "master"
+		branchNew := "new-branch"
+		session := loginUser(t, testUser)
+
+		// Create a branch with commit, open a PR and see if the summary is displayed correctly for 1 commit
+		testEditFileToNewBranch(t, session, testUser, testRepo, branchOld, branchNew, "README.md", "test of pull summary")
+		url := path.Join(testUser, testRepo, "compare", branchOld+"..."+branchNew)
+		req := NewRequestWithValues(t, "POST", url,
+			map[string]string{
+				"_csrf": GetCSRF(t, session, url),
+				"title": "1st pull request to test summary",
+			},
+		)
+		session.MakeRequest(t, req, http.StatusOK)
+		testPullSummaryCommits(t, session, testUser, testRepo, "6", "wants to merge 1 commit")
+
+		// Merge the PR and see if the summary is displayed correctly for 1 commit
+		testPullMerge(t, session, testUser, testRepo, "6", "merge", true)
+		testPullSummaryCommits(t, session, testUser, testRepo, "6", "merged 1 commit")
+
+		// Create a branch with 2 commits, open a PR and see if the summary is displayed correctly for 2 commits
+		testEditFileToNewBranch(t, session, testUser, testRepo, branchOld, branchNew, "README.md", "test of pull summary (the 2nd)")
+		testEditFile(t, session, testUser, testRepo, branchNew, "README.md", "test of pull summary (the 3rd)")
+		req = NewRequestWithValues(t, "POST", url,
+			map[string]string{
+				"_csrf": GetCSRF(t, session, url),
+				"title": "2nd pull request to test summary",
+			},
+		)
+		session.MakeRequest(t, req, http.StatusOK)
+		testPullSummaryCommits(t, session, testUser, testRepo, "7", "wants to merge 2 commits")
+
+		// Merge the PR and see if the summary is displayed correctly for 2 commits
+		testPullMerge(t, session, testUser, testRepo, "7", "merge", true)
+		testPullSummaryCommits(t, session, testUser, testRepo, "7", "merged 2 commits")
+	})
+}
+
+func testPullSummaryCommits(t *testing.T, session *TestSession, user, repo, pullNum, expectedSummary string) {
+	t.Helper()
+	req := NewRequest(t, "GET", path.Join(user, repo, "pulls", pullNum))
+	resp := session.MakeRequest(t, req, http.StatusOK)
+	doc := NewHTMLParser(t, resp.Body)
+	text := strings.TrimSpace(doc.doc.Find(".pull-desc").Text())
+	assert.Contains(t, text, expectedSummary)
+}