mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-23 18:53:50 +00:00
feat(ui): add links to review request targets in issue comments (#8239)
- Add links to review request targets in issue comments - Fix links to ghost users/orgs/teams to be empty Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8239 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: Robert Wolff <mahlzahn@posteo.de> Co-committed-by: Robert Wolff <mahlzahn@posteo.de>
This commit is contained in:
parent
82daae4c7c
commit
7643bdd2b5
11 changed files with 256 additions and 21 deletions
|
@ -5,13 +5,20 @@ package integration
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"forgejo.org/models/db"
|
||||
issues_model "forgejo.org/models/issues"
|
||||
org_model "forgejo.org/models/organization"
|
||||
"forgejo.org/models/unittest"
|
||||
user_model "forgejo.org/models/user"
|
||||
"forgejo.org/tests"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func testIssueCommentChangeEvent(t *testing.T, htmlDoc *HTMLDoc, commentID, badgeOcticon, avatarTitle, avatarLink string, texts, links []string) {
|
||||
|
@ -238,6 +245,76 @@ func TestIssueCommentChangeAssignee(t *testing.T) {
|
|||
[]string{"/user2"})
|
||||
}
|
||||
|
||||
func TestIssueCommentChangeReviewRequest(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
pull := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 6})
|
||||
require.NoError(t, pull.LoadIssue(db.DefaultContext))
|
||||
issue := pull.Issue
|
||||
require.NoError(t, issue.LoadRepo(db.DefaultContext))
|
||||
|
||||
user1, err := user_model.GetUserByID(db.DefaultContext, 1)
|
||||
require.NoError(t, err)
|
||||
user2, err := user_model.GetUserByID(db.DefaultContext, 2)
|
||||
require.NoError(t, err)
|
||||
team1, err := org_model.GetTeamByID(db.DefaultContext, 2)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, team1)
|
||||
|
||||
// Request from other
|
||||
comment1, err := issues_model.AddReviewRequest(db.DefaultContext, issue, user2, user1)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Refuse review
|
||||
comment2, err := issues_model.RemoveReviewRequest(db.DefaultContext, issue, user2, user2)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Request from other
|
||||
comment3, err := issues_model.AddReviewRequest(db.DefaultContext, issue, user2, user1)
|
||||
require.NoError(t, err)
|
||||
// Request from team
|
||||
comment4, err := issues_model.AddTeamReviewRequest(db.DefaultContext, issue, team1, user1)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Remove request from team
|
||||
comment5, err := issues_model.RemoveTeamReviewRequest(db.DefaultContext, issue, team1, user2)
|
||||
require.NoError(t, err)
|
||||
// Request from other
|
||||
comment6, err := issues_model.AddReviewRequest(db.DefaultContext, issue, user1, user2)
|
||||
require.NoError(t, err)
|
||||
|
||||
session := loginUser(t, "user2")
|
||||
req := NewRequest(t, "GET", "/org3/repo3/pulls/2")
|
||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
// Request from other
|
||||
testIssueCommentChangeEvent(t, htmlDoc, strconv.FormatInt(comment1.ID, 10),
|
||||
"octicon-eye", "User One", "/user1",
|
||||
[]string{"user1 requested review from user2"},
|
||||
[]string{"/user1", "/user2"})
|
||||
|
||||
// Refuse review
|
||||
testIssueCommentChangeEvent(t, htmlDoc, strconv.FormatInt(comment2.ID, 10),
|
||||
"octicon-eye", "< U<se>r Tw<o > ><", "/user2",
|
||||
[]string{"user2 refused to review"},
|
||||
[]string{"/user2"})
|
||||
|
||||
// Request review from other and from team
|
||||
testIssueCommentChangeEvent(t, htmlDoc, strconv.FormatInt(comment3.ID, 10),
|
||||
"octicon-eye", "User One", "/user1",
|
||||
[]string{"user1 requested reviews from user2, team1"},
|
||||
[]string{"/user1", "/user2", "/org/org3/teams/team1"})
|
||||
assert.Empty(t, htmlDoc.Find("#issuecomment-"+strconv.FormatInt(comment4.ID, 10)+" .text").Text())
|
||||
|
||||
// Remove and add request
|
||||
testIssueCommentChangeEvent(t, htmlDoc, strconv.FormatInt(comment5.ID, 10),
|
||||
"octicon-eye", "< U<se>r Tw<o > ><", "/user2",
|
||||
[]string{"user2 requested reviews from user1 and removed review requests for team1"},
|
||||
[]string{"/user2", "/user1", "/org/org3/teams/team1"})
|
||||
assert.Empty(t, htmlDoc.Find("#issuecomment-"+strconv.FormatInt(comment6.ID, 10)+" .text").Text())
|
||||
}
|
||||
|
||||
func TestIssueCommentChangeLock(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue