Unit tests for models/action (#619)
parent
f4feeecc3a
commit
4b23e6a694
@ -0,0 +1,340 @@ |
||||
package models |
||||
|
||||
import ( |
||||
"testing" |
||||
|
||||
"code.gitea.io/gitea/modules/setting" |
||||
"github.com/stretchr/testify/assert" |
||||
) |
||||
|
||||
func TestAction_GetRepoPath(t *testing.T) { |
||||
action := &Action{ |
||||
RepoUserName: "username", |
||||
RepoName: "reponame", |
||||
} |
||||
assert.Equal(t, "username/reponame", action.GetRepoPath()) |
||||
} |
||||
|
||||
func TestAction_GetRepoLink(t *testing.T) { |
||||
action := &Action{ |
||||
RepoUserName: "username", |
||||
RepoName: "reponame", |
||||
} |
||||
setting.AppSubURL = "/suburl/" |
||||
assert.Equal(t, "/suburl/username/reponame", action.GetRepoLink()) |
||||
setting.AppSubURL = "" |
||||
assert.Equal(t, "/username/reponame", action.GetRepoLink()) |
||||
} |
||||
|
||||
func TestNewRepoAction(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
|
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
repo := &Repository{OwnerID: user.ID} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
repo.Owner = user |
||||
|
||||
actionBean := &Action{ |
||||
OpType: ActionCreateRepo, |
||||
ActUserID: user.ID, |
||||
RepoID: repo.ID, |
||||
ActUserName: user.Name, |
||||
RepoName: repo.Name, |
||||
RepoUserName: repo.Owner.Name, |
||||
IsPrivate: repo.IsPrivate, |
||||
} |
||||
|
||||
AssertNotExistsBean(t, actionBean) |
||||
assert.NoError(t, NewRepoAction(user, repo)) |
||||
AssertExistsAndLoadBean(t, actionBean) |
||||
} |
||||
|
||||
func TestRenameRepoAction(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
|
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
repo := &Repository{OwnerID: user.ID} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
repo.Owner = user |
||||
|
||||
oldRepoName := repo.Name |
||||
const newRepoName = "newRepoName" |
||||
repo.Name = newRepoName |
||||
|
||||
actionBean := &Action{ |
||||
OpType: ActionRenameRepo, |
||||
ActUserID: user.ID, |
||||
ActUserName: user.Name, |
||||
RepoID: repo.ID, |
||||
RepoName: repo.Name, |
||||
RepoUserName: repo.Owner.Name, |
||||
IsPrivate: repo.IsPrivate, |
||||
Content: oldRepoName, |
||||
} |
||||
AssertNotExistsBean(t, actionBean) |
||||
assert.NoError(t, RenameRepoAction(user, oldRepoName, repo)) |
||||
AssertExistsAndLoadBean(t, actionBean) |
||||
} |
||||
|
||||
func TestPushCommits_ToAPIPayloadCommits(t *testing.T) { |
||||
pushCommits := NewPushCommits() |
||||
pushCommits.Commits = []*PushCommit{ |
||||
{ |
||||
Sha1: "abcdef1", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user4@example.com", |
||||
AuthorName: "User Four", |
||||
Message: "message1", |
||||
}, |
||||
{ |
||||
Sha1: "abcdef2", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user2@example.com", |
||||
AuthorName: "User Two", |
||||
Message: "message2", |
||||
}, |
||||
} |
||||
pushCommits.Len = len(pushCommits.Commits) |
||||
|
||||
payloadCommits := pushCommits.ToAPIPayloadCommits("/username/reponame") |
||||
assert.Len(t, payloadCommits, 2) |
||||
assert.Equal(t, "abcdef1", payloadCommits[0].ID) |
||||
assert.Equal(t, "message1", payloadCommits[0].Message) |
||||
assert.Equal(t, "/username/reponame/commit/abcdef1", payloadCommits[0].URL) |
||||
assert.Equal(t, "User Two", payloadCommits[0].Committer.Name) |
||||
assert.Equal(t, "user2", payloadCommits[0].Committer.UserName) |
||||
assert.Equal(t, "User Four", payloadCommits[0].Author.Name) |
||||
assert.Equal(t, "user4", payloadCommits[0].Author.UserName) |
||||
|
||||
assert.Equal(t, "abcdef2", payloadCommits[1].ID) |
||||
assert.Equal(t, "message2", payloadCommits[1].Message) |
||||
assert.Equal(t, "/username/reponame/commit/abcdef2", payloadCommits[1].URL) |
||||
assert.Equal(t, "User Two", payloadCommits[1].Committer.Name) |
||||
assert.Equal(t, "user2", payloadCommits[1].Committer.UserName) |
||||
assert.Equal(t, "User Two", payloadCommits[1].Author.Name) |
||||
assert.Equal(t, "user2", payloadCommits[1].Author.UserName) |
||||
} |
||||
|
||||
func TestPushCommits_AvatarLink(t *testing.T) { |
||||
pushCommits := NewPushCommits() |
||||
pushCommits.Commits = []*PushCommit{ |
||||
{ |
||||
Sha1: "abcdef1", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user4@example.com", |
||||
AuthorName: "User Four", |
||||
Message: "message1", |
||||
}, |
||||
{ |
||||
Sha1: "abcdef2", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user2@example.com", |
||||
AuthorName: "User Two", |
||||
Message: "message2", |
||||
}, |
||||
} |
||||
pushCommits.Len = len(pushCommits.Commits) |
||||
|
||||
assert.Equal(t, |
||||
"https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f", |
||||
pushCommits.AvatarLink("user2@example.com")) |
||||
|
||||
assert.Equal(t, |
||||
"https://secure.gravatar.com/avatar/19ade630b94e1e0535b3df7387434154", |
||||
pushCommits.AvatarLink("nonexistent@example.com")) |
||||
} |
||||
|
||||
func TestUpdateIssuesCommit(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
pushCommits := []*PushCommit{ |
||||
{ |
||||
Sha1: "abcdef1", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user4@example.com", |
||||
AuthorName: "User Four", |
||||
Message: "start working on #1", |
||||
}, |
||||
{ |
||||
Sha1: "abcdef2", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user2@example.com", |
||||
AuthorName: "User Two", |
||||
Message: "a plain message", |
||||
}, |
||||
{ |
||||
Sha1: "abcdef2", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user2@example.com", |
||||
AuthorName: "User Two", |
||||
Message: "close #2", |
||||
}, |
||||
} |
||||
|
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
repo := &Repository{ID: 1} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
repo.Owner = user |
||||
|
||||
commentBean := &Comment{ |
||||
Type: CommentTypeCommitRef, |
||||
CommitSHA: "abcdef1", |
||||
PosterID: user.ID, |
||||
IssueID: 1, |
||||
} |
||||
issueBean := &Issue{RepoID: repo.ID, Index: 2} |
||||
|
||||
AssertNotExistsBean(t, commentBean) |
||||
AssertNotExistsBean(t, &Issue{RepoID: repo.ID, Index: 2}, "is_closed=1") |
||||
assert.NoError(t, UpdateIssuesCommit(user, repo, pushCommits)) |
||||
AssertExistsAndLoadBean(t, commentBean) |
||||
AssertExistsAndLoadBean(t, issueBean, "is_closed=1") |
||||
} |
||||
|
||||
func TestCommitRepoAction(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
|
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
repo := &Repository{ID: 2, OwnerID: user.ID} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
repo.Owner = user |
||||
|
||||
pushCommits := NewPushCommits() |
||||
pushCommits.Commits = []*PushCommit{ |
||||
{ |
||||
Sha1: "abcdef1", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user4@example.com", |
||||
AuthorName: "User Four", |
||||
Message: "message1", |
||||
}, |
||||
{ |
||||
Sha1: "abcdef2", |
||||
CommitterEmail: "user2@example.com", |
||||
CommitterName: "User Two", |
||||
AuthorEmail: "user2@example.com", |
||||
AuthorName: "User Two", |
||||
Message: "message2", |
||||
}, |
||||
} |
||||
pushCommits.Len = len(pushCommits.Commits) |
||||
|
||||
actionBean := &Action{ |
||||
OpType: ActionCommitRepo, |
||||
ActUserID: user.ID, |
||||
ActUserName: user.Name, |
||||
RepoID: repo.ID, |
||||
RepoName: repo.Name, |
||||
RefName: "refName", |
||||
IsPrivate: repo.IsPrivate, |
||||
} |
||||
AssertNotExistsBean(t, actionBean) |
||||
assert.NoError(t, CommitRepoAction(CommitRepoActionOptions{ |
||||
PusherName: user.Name, |
||||
RepoOwnerID: user.ID, |
||||
RepoName: repo.Name, |
||||
RefFullName: "refName", |
||||
OldCommitID: "oldCommitID", |
||||
NewCommitID: "newCommitID", |
||||
Commits: pushCommits, |
||||
})) |
||||
AssertExistsAndLoadBean(t, actionBean) |
||||
} |
||||
|
||||
func TestTransferRepoAction(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
|
||||
user2 := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user2) |
||||
user4 := &User{ID: 4} |
||||
AssertExistsAndLoadBean(t, user4) |
||||
repo := &Repository{ID: 1, OwnerID: user2.ID} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
|
||||
repo.OwnerID = user4.ID |
||||
repo.Owner = user4 |
||||
|
||||
actionBean := &Action{ |
||||
OpType: ActionTransferRepo, |
||||
ActUserID: user2.ID, |
||||
ActUserName: user2.Name, |
||||
RepoID: repo.ID, |
||||
RepoName: repo.Name, |
||||
RepoUserName: repo.Owner.Name, |
||||
IsPrivate: repo.IsPrivate, |
||||
} |
||||
AssertNotExistsBean(t, actionBean) |
||||
assert.NoError(t, TransferRepoAction(user2, user2, repo)) |
||||
AssertExistsAndLoadBean(t, actionBean) |
||||
} |
||||
|
||||
func TestMergePullRequestAction(t *testing.T) { |
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
repo := &Repository{ID: 1, OwnerID: user.ID} |
||||
AssertExistsAndLoadBean(t, repo) |
||||
repo.Owner = user |
||||
issue := &Issue{ID: 3, RepoID: repo.ID} |
||||
AssertExistsAndLoadBean(t, issue) |
||||
|
||||
actionBean := &Action{ |
||||
OpType: ActionMergePullRequest, |
||||
ActUserID: user.ID, |
||||
ActUserName: user.Name, |
||||
RepoID: repo.ID, |
||||
RepoName: repo.Name, |
||||
RepoUserName: repo.Owner.Name, |
||||
IsPrivate: repo.IsPrivate, |
||||
} |
||||
AssertNotExistsBean(t, actionBean) |
||||
assert.NoError(t, MergePullRequestAction(user, repo, issue)) |
||||
AssertExistsAndLoadBean(t, actionBean) |
||||
} |
||||
|
||||
func TestGetFeeds(t *testing.T) { |
||||
// test with an individual user
|
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
user := &User{ID: 2} |
||||
AssertExistsAndLoadBean(t, user) |
||||
|
||||
actions, err := GetFeeds(user, user.ID, 0, false) |
||||
assert.NoError(t, err) |
||||
assert.Len(t, actions, 1) |
||||
assert.Equal(t, int64(1), actions[0].ID) |
||||
assert.Equal(t, user.ID, actions[0].UserID) |
||||
|
||||
actions, err = GetFeeds(user, user.ID, 0, true) |
||||
assert.NoError(t, err) |
||||
assert.Len(t, actions, 0) |
||||
} |
||||
|
||||
func TestGetFeeds2(t *testing.T) { |
||||
// test with an organization user
|
||||
assert.NoError(t, PrepareTestDatabase()) |
||||
user := &User{ID: 3} |
||||
AssertExistsAndLoadBean(t, user) |
||||
|
||||
actions, err := GetFeeds(user, user.ID, 0, false) |
||||
assert.NoError(t, err) |
||||
assert.Len(t, actions, 1) |
||||
assert.Equal(t, int64(2), actions[0].ID) |
||||
assert.Equal(t, user.ID, actions[0].UserID) |
||||
|
||||
actions, err = GetFeeds(user, user.ID, 0, true) |
||||
assert.NoError(t, err) |
||||
assert.Len(t, actions, 1) |
||||
assert.Equal(t, int64(2), actions[0].ID) |
||||
assert.Equal(t, user.ID, actions[0].UserID) |
||||
} |
@ -0,0 +1,22 @@ |
||||
- |
||||
id: 1 |
||||
user_id: 2 |
||||
op_type: 12 # close issue |
||||
act_user_id: 2 |
||||
act_user_name: user2 |
||||
repo_id: 2 |
||||
repo_user_name: user2 |
||||
repo_name: repo2 |
||||
is_private: true |
||||
|
||||
- |
||||
id: 2 |
||||
user_id: 3 |
||||
op_type: 2 # rename repo |
||||
act_user_id: 3 |
||||
act_user_name: user3 |
||||
repo_id: 3 |
||||
repo_user_name: user3 |
||||
repo_name: repo3 # TODO old or new name? |
||||
is_private: false |
||||
content: oldRepoName |
Loading…
Reference in new issue