diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 12e4941370..cc0fa143cb 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1818,6 +1818,7 @@ pulls.title_wip_desc = `Start the title with %s pulls.cannot_merge_work_in_progress = This pull request is marked as a work in progress. pulls.still_in_progress = Still in progress? pulls.add_prefix = Add %s prefix +pulls.ready_for_review = Ready for review? pulls.remove_prefix = Remove %s prefix pulls.data_broken = This pull request is broken due to missing fork information. pulls.files_conflicted = This pull request has changes conflicting with the target branch. diff --git a/templates/repo/issue/view_content/sidebar.tmpl b/templates/repo/issue/view_content/sidebar.tmpl index 3d9ef4ced9..9dd49fd7e7 100644 --- a/templates/repo/issue/view_content/sidebar.tmpl +++ b/templates/repo/issue/view_content/sidebar.tmpl @@ -113,10 +113,14 @@ {{end}} - {{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .HasMerged) (not .Issue.IsClosed) (not .IsPullWorkInProgress)}} + {{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .HasMerged) (not .Issue.IsClosed)}}
{{end}} diff --git a/tests/integration/pull_wip_convert_test.go b/tests/integration/pull_wip_convert_test.go new file mode 100644 index 0000000000..935636bd7f --- /dev/null +++ b/tests/integration/pull_wip_convert_test.go @@ -0,0 +1,59 @@ +// 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 TestPullWIPConvertSidebar(t *testing.T) { + onGiteaRun(t, func(t *testing.T, u *url.URL) { + testRepo := "repo1" + branchOld := "master" + branchNew := "wip" + userOwner := "user2" + userUnrelated := "user4" + sessionOwner := loginUser(t, userOwner) // Owner of the repo. Expected to see the offers. + sessionUnrelated := loginUser(t, userUnrelated) // Unrelated user. Not expected to see the offers. + + // Create a branch with commit, open a PR and check who is seeing the Add WIP offering + testEditFileToNewBranch(t, sessionOwner, userOwner, testRepo, branchOld, branchNew, "README.md", "test of wip offering") + url := path.Join(userOwner, testRepo, "compare", branchOld+"..."+branchNew) + req := NewRequestWithValues(t, "POST", url, + map[string]string{ + "_csrf": GetCSRF(t, sessionOwner, url), + "title": "pull used for testing wip offering", + }, + ) + sessionOwner.MakeRequest(t, req, http.StatusOK) + testPullWIPConvertSidebar(t, sessionOwner, userOwner, testRepo, "6", "Still in progress? Add WIP: prefix") + testPullWIPConvertSidebar(t, sessionUnrelated, userOwner, testRepo, "6", "") + + // Add WIP: prefix and check who is seeing the Remove WIP offering + req = NewRequestWithValues(t, "POST", path.Join(userOwner, testRepo, "pulls/6/title"), + map[string]string{ + "_csrf": GetCSRF(t, sessionOwner, path.Join(userOwner, testRepo, "pulls/6")), + "title": "WIP: pull used for testing wip offering", + }, + ) + sessionOwner.MakeRequest(t, req, http.StatusOK) + testPullWIPConvertSidebar(t, sessionOwner, userOwner, testRepo, "6", "Ready for review? Remove WIP: prefix") + testPullWIPConvertSidebar(t, sessionUnrelated, userOwner, testRepo, "6", "") + }) +} + +func testPullWIPConvertSidebar(t *testing.T, session *TestSession, user, repo, pullNum, expected 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(".toggle-wip a").Text()) + assert.Equal(t, expected, text) +}