da50be7360
Currently 'userxx' and 'orgxx' are both used as username in test files when the user type is org, which is confusing. This PR replaces all 'userxx' with 'orgxx' when the user type is org(`user.type==1`). Some non-trivial changes 1. Rename `user3` dir to `org3` in `tests/git-repositories-meta` 2. Change `end` in `issue reference` because 'org3' is one char shorter than 'user3' ![ksnip_20230913-112819](https://github.com/go-gitea/gitea/assets/70063547/442988c5-4cf4-49b8-aa01-4dd6bf0ca954) 3. Change the search result number of `user/repo2` because `user3/repo21` can't be searched now ![ksnip_20230913-112931](https://github.com/go-gitea/gitea/assets/70063547/d9ebeba4-479f-4110-9a85-825efbc981fd) 4. Change the first org name getting from API because the result is ordered by alphabet asc and now `org 17` is before `org25` ![JW8U7NIO(J$H _YCRB36H)T](https://github.com/go-gitea/gitea/assets/70063547/f55a685c-cf24-40e5-a87f-3a2327319548) ![)KFD411O4I8RB5ZOH7E0 Z3](https://github.com/go-gitea/gitea/assets/70063547/a0dc3299-249c-46f6-91cb-d15d4ee88dd5) Other modifications are just find all and replace all. Unit tests with SQLite are all passed. --------- Co-authored-by: caicandong <1290147055@qq.com>
174 lines
5.7 KiB
Go
174 lines
5.7 KiB
Go
// Copyright 2017 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package issues_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"code.gitea.io/gitea/models/db"
|
|
issues_model "code.gitea.io/gitea/models/issues"
|
|
repo_model "code.gitea.io/gitea/models/repo"
|
|
"code.gitea.io/gitea/models/unittest"
|
|
user_model "code.gitea.io/gitea/models/user"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func addReaction(t *testing.T, doerID, issueID, commentID int64, content string) {
|
|
var reaction *issues_model.Reaction
|
|
var err error
|
|
if commentID == 0 {
|
|
reaction, err = issues_model.CreateIssueReaction(doerID, issueID, content)
|
|
} else {
|
|
reaction, err = issues_model.CreateCommentReaction(doerID, issueID, commentID, content)
|
|
}
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, reaction)
|
|
}
|
|
|
|
func TestIssueAddReaction(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
|
|
var issue1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
|
|
|
unittest.AssertExistsAndLoadBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID})
|
|
}
|
|
|
|
func TestIssueAddDuplicateReaction(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
|
|
var issue1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
|
|
|
reaction, err := issues_model.CreateReaction(&issues_model.ReactionOptions{
|
|
DoerID: user1.ID,
|
|
IssueID: issue1ID,
|
|
Type: "heart",
|
|
})
|
|
assert.Error(t, err)
|
|
assert.Equal(t, issues_model.ErrReactionAlreadyExist{Reaction: "heart"}, err)
|
|
|
|
existingR := unittest.AssertExistsAndLoadBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID})
|
|
assert.Equal(t, existingR.ID, reaction.ID)
|
|
}
|
|
|
|
func TestIssueDeleteReaction(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
|
|
var issue1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
|
|
|
err := issues_model.DeleteIssueReaction(user1.ID, issue1ID, "heart")
|
|
assert.NoError(t, err)
|
|
|
|
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID})
|
|
}
|
|
|
|
func TestIssueReactionCount(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
setting.UI.ReactionMaxUserNum = 2
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
|
org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
|
|
user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
|
|
ghost := user_model.NewGhostUser()
|
|
|
|
var issueID int64 = 2
|
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
|
|
|
addReaction(t, user1.ID, issueID, 0, "heart")
|
|
addReaction(t, user2.ID, issueID, 0, "heart")
|
|
addReaction(t, org3.ID, issueID, 0, "heart")
|
|
addReaction(t, org3.ID, issueID, 0, "+1")
|
|
addReaction(t, user4.ID, issueID, 0, "+1")
|
|
addReaction(t, user4.ID, issueID, 0, "heart")
|
|
addReaction(t, ghost.ID, issueID, 0, "-1")
|
|
|
|
reactionsList, _, err := issues_model.FindReactions(db.DefaultContext, issues_model.FindReactionsOptions{
|
|
IssueID: issueID,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, reactionsList, 7)
|
|
_, err = reactionsList.LoadUsers(db.DefaultContext, repo)
|
|
assert.NoError(t, err)
|
|
|
|
reactions := reactionsList.GroupByType()
|
|
assert.Len(t, reactions["heart"], 4)
|
|
assert.Equal(t, 2, reactions["heart"].GetMoreUserCount())
|
|
assert.Equal(t, user1.Name+", "+user2.Name, reactions["heart"].GetFirstUsers())
|
|
assert.True(t, reactions["heart"].HasUser(1))
|
|
assert.False(t, reactions["heart"].HasUser(5))
|
|
assert.False(t, reactions["heart"].HasUser(0))
|
|
assert.Len(t, reactions["+1"], 2)
|
|
assert.Equal(t, 0, reactions["+1"].GetMoreUserCount())
|
|
assert.Len(t, reactions["-1"], 1)
|
|
}
|
|
|
|
func TestIssueCommentAddReaction(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
|
|
var issue1ID int64 = 1
|
|
var comment1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, comment1ID, "heart")
|
|
|
|
unittest.AssertExistsAndLoadBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID, CommentID: comment1ID})
|
|
}
|
|
|
|
func TestIssueCommentDeleteReaction(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
|
org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
|
|
user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
|
|
|
|
var issue1ID int64 = 1
|
|
var comment1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, comment1ID, "heart")
|
|
addReaction(t, user2.ID, issue1ID, comment1ID, "heart")
|
|
addReaction(t, org3.ID, issue1ID, comment1ID, "heart")
|
|
addReaction(t, user4.ID, issue1ID, comment1ID, "+1")
|
|
|
|
reactionsList, _, err := issues_model.FindReactions(db.DefaultContext, issues_model.FindReactionsOptions{
|
|
IssueID: issue1ID,
|
|
CommentID: comment1ID,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, reactionsList, 4)
|
|
|
|
reactions := reactionsList.GroupByType()
|
|
assert.Len(t, reactions["heart"], 3)
|
|
assert.Len(t, reactions["+1"], 1)
|
|
}
|
|
|
|
func TestIssueCommentReactionCount(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
|
|
|
var issue1ID int64 = 1
|
|
var comment1ID int64 = 1
|
|
|
|
addReaction(t, user1.ID, issue1ID, comment1ID, "heart")
|
|
assert.NoError(t, issues_model.DeleteCommentReaction(user1.ID, issue1ID, comment1ID, "heart"))
|
|
|
|
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID, CommentID: comment1ID})
|
|
}
|