Tests for reactions (#3083)
* Unit tests for reactions * Fix import order Signed-off-by: Lauris Bukšis-Haberkorns <lauris@nix.lv>
This commit is contained in:
		
							parent
							
								
									3b89ee5501
								
							
						
					
					
						commit
						f1d8dda5b4
					
				
					 2 changed files with 168 additions and 2 deletions
				
			
		|  | @ -9,10 +9,10 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
|  | 
 | ||||||
| 	"github.com/go-xorm/builder" | 	"github.com/go-xorm/builder" | ||||||
| 	"github.com/go-xorm/xorm" | 	"github.com/go-xorm/xorm" | ||||||
| 
 |  | ||||||
| 	"code.gitea.io/gitea/modules/setting" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Reaction represents a reactions on issues and comments.
 | // Reaction represents a reactions on issues and comments.
 | ||||||
|  |  | ||||||
							
								
								
									
										166
									
								
								models/issue_reaction_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								models/issue_reaction_test.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,166 @@ | ||||||
|  | // Copyright 2017 The Gitea Authors. All rights reserved.
 | ||||||
|  | // Use of this source code is governed by a MIT-style
 | ||||||
|  | // license that can be found in the LICENSE file.
 | ||||||
|  | package models | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"testing" | ||||||
|  | 
 | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
|  | 
 | ||||||
|  | 	"github.com/stretchr/testify/assert" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func addReaction(t *testing.T, doer *User, issue *Issue, comment *Comment, content string) { | ||||||
|  | 	var reaction *Reaction | ||||||
|  | 	var err error | ||||||
|  | 	if comment == nil { | ||||||
|  | 		reaction, err = CreateIssueReaction(doer, issue, content) | ||||||
|  | 	} else { | ||||||
|  | 		reaction, err = CreateCommentReaction(doer, issue, comment, content) | ||||||
|  | 	} | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 	assert.NotNil(t, reaction) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueAddReaction(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, nil, "heart") | ||||||
|  | 
 | ||||||
|  | 	AssertExistsAndLoadBean(t, &Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1.ID}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueAddDuplicateReaction(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, nil, "heart") | ||||||
|  | 
 | ||||||
|  | 	reaction, err := CreateReaction(&ReactionOptions{ | ||||||
|  | 		Doer:  user1, | ||||||
|  | 		Issue: issue1, | ||||||
|  | 		Type:  "heart", | ||||||
|  | 	}) | ||||||
|  | 	assert.Error(t, err) | ||||||
|  | 	assert.Nil(t, reaction) | ||||||
|  | 
 | ||||||
|  | 	AssertExistsAndLoadBean(t, &Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1.ID}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueDeleteReaction(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, nil, "heart") | ||||||
|  | 
 | ||||||
|  | 	err := DeleteIssueReaction(user1, issue1, "heart") | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 	AssertNotExistsBean(t, &Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1.ID}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueReactionCount(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	setting.UI.ReactionMaxUserNum = 2 | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 	user2 := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User) | ||||||
|  | 	user3 := AssertExistsAndLoadBean(t, &User{ID: 3}).(*User) | ||||||
|  | 	user4 := AssertExistsAndLoadBean(t, &User{ID: 4}).(*User) | ||||||
|  | 	ghost := NewGhostUser() | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, nil, "heart") | ||||||
|  | 	addReaction(t, user2, issue1, nil, "heart") | ||||||
|  | 	addReaction(t, user3, issue1, nil, "heart") | ||||||
|  | 	addReaction(t, user3, issue1, nil, "+1") | ||||||
|  | 	addReaction(t, user4, issue1, nil, "+1") | ||||||
|  | 	addReaction(t, user4, issue1, nil, "heart") | ||||||
|  | 	addReaction(t, ghost, issue1, nil, "-1") | ||||||
|  | 
 | ||||||
|  | 	err := issue1.loadReactions(x) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 	assert.Len(t, issue1.Reactions, 7) | ||||||
|  | 
 | ||||||
|  | 	reactions := issue1.Reactions.GroupByType() | ||||||
|  | 	assert.Len(t, reactions["heart"], 4) | ||||||
|  | 	assert.Equal(t, 2, reactions["heart"].GetMoreUserCount()) | ||||||
|  | 	assert.Equal(t, "User One, User Two", 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, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	comment1 := AssertExistsAndLoadBean(t, &Comment{ID: 1}).(*Comment) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, comment1, "heart") | ||||||
|  | 
 | ||||||
|  | 	AssertExistsAndLoadBean(t, &Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1.ID, CommentID: comment1.ID}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueCommentDeleteReaction(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 	user2 := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User) | ||||||
|  | 	user3 := AssertExistsAndLoadBean(t, &User{ID: 3}).(*User) | ||||||
|  | 	user4 := AssertExistsAndLoadBean(t, &User{ID: 4}).(*User) | ||||||
|  | 	ghost := NewGhostUser() | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	comment1 := AssertExistsAndLoadBean(t, &Comment{ID: 1}).(*Comment) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, comment1, "heart") | ||||||
|  | 	addReaction(t, user2, issue1, comment1, "heart") | ||||||
|  | 	addReaction(t, user3, issue1, comment1, "heart") | ||||||
|  | 	addReaction(t, user4, issue1, comment1, "+1") | ||||||
|  | 	addReaction(t, ghost, issue1, comment1, "heart") | ||||||
|  | 
 | ||||||
|  | 	err := comment1.LoadReactions() | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 	assert.Len(t, comment1.Reactions, 5) | ||||||
|  | 
 | ||||||
|  | 	reactions := comment1.Reactions.GroupByType() | ||||||
|  | 	assert.Len(t, reactions["heart"], 4) | ||||||
|  | 	assert.Len(t, reactions["+1"], 1) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIssueCommentReactionCount(t *testing.T) { | ||||||
|  | 	assert.NoError(t, PrepareTestDatabase()) | ||||||
|  | 
 | ||||||
|  | 	user1 := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User) | ||||||
|  | 
 | ||||||
|  | 	issue1 := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) | ||||||
|  | 
 | ||||||
|  | 	comment1 := AssertExistsAndLoadBean(t, &Comment{ID: 1}).(*Comment) | ||||||
|  | 
 | ||||||
|  | 	addReaction(t, user1, issue1, comment1, "heart") | ||||||
|  | 	DeleteCommentReaction(user1, issue1, comment1, "heart") | ||||||
|  | 
 | ||||||
|  | 	AssertNotExistsBean(t, &Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1.ID, CommentID: comment1.ID}) | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue