code.gitea.io/gitea@v1.22.3/models/issues/comment_test.go (about)

     1  // Copyright 2017 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package issues_test
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"code.gitea.io/gitea/models/db"
    11  	issues_model "code.gitea.io/gitea/models/issues"
    12  	repo_model "code.gitea.io/gitea/models/repo"
    13  	"code.gitea.io/gitea/models/unittest"
    14  	user_model "code.gitea.io/gitea/models/user"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  )
    18  
    19  func TestCreateComment(t *testing.T) {
    20  	assert.NoError(t, unittest.PrepareTestDatabase())
    21  
    22  	issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{})
    23  	repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: issue.RepoID})
    24  	doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
    25  
    26  	now := time.Now().Unix()
    27  	comment, err := issues_model.CreateComment(db.DefaultContext, &issues_model.CreateCommentOptions{
    28  		Type:    issues_model.CommentTypeComment,
    29  		Doer:    doer,
    30  		Repo:    repo,
    31  		Issue:   issue,
    32  		Content: "Hello",
    33  	})
    34  	assert.NoError(t, err)
    35  	then := time.Now().Unix()
    36  
    37  	assert.EqualValues(t, issues_model.CommentTypeComment, comment.Type)
    38  	assert.EqualValues(t, "Hello", comment.Content)
    39  	assert.EqualValues(t, issue.ID, comment.IssueID)
    40  	assert.EqualValues(t, doer.ID, comment.PosterID)
    41  	unittest.AssertInt64InRange(t, now, then, int64(comment.CreatedUnix))
    42  	unittest.AssertExistsAndLoadBean(t, comment) // assert actually added to DB
    43  
    44  	updatedIssue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: issue.ID})
    45  	unittest.AssertInt64InRange(t, now, then, int64(updatedIssue.UpdatedUnix))
    46  }
    47  
    48  func TestFetchCodeComments(t *testing.T) {
    49  	assert.NoError(t, unittest.PrepareTestDatabase())
    50  
    51  	issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
    52  	user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
    53  	res, err := issues_model.FetchCodeComments(db.DefaultContext, issue, user, false)
    54  	assert.NoError(t, err)
    55  	assert.Contains(t, res, "README.md")
    56  	assert.Contains(t, res["README.md"], int64(4))
    57  	assert.Len(t, res["README.md"][4], 1)
    58  	assert.Equal(t, int64(4), res["README.md"][4][0].ID)
    59  
    60  	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
    61  	res, err = issues_model.FetchCodeComments(db.DefaultContext, issue, user2, false)
    62  	assert.NoError(t, err)
    63  	assert.Len(t, res, 1)
    64  }
    65  
    66  func TestAsCommentType(t *testing.T) {
    67  	assert.Equal(t, issues_model.CommentType(0), issues_model.CommentTypeComment)
    68  	assert.Equal(t, issues_model.CommentTypeUndefined, issues_model.AsCommentType(""))
    69  	assert.Equal(t, issues_model.CommentTypeUndefined, issues_model.AsCommentType("nonsense"))
    70  	assert.Equal(t, issues_model.CommentTypeComment, issues_model.AsCommentType("comment"))
    71  	assert.Equal(t, issues_model.CommentTypePRUnScheduledToAutoMerge, issues_model.AsCommentType("pull_cancel_scheduled_merge"))
    72  }
    73  
    74  func TestMigrate_InsertIssueComments(t *testing.T) {
    75  	assert.NoError(t, unittest.PrepareTestDatabase())
    76  	issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1})
    77  	_ = issue.LoadRepo(db.DefaultContext)
    78  	owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID})
    79  	reaction := &issues_model.Reaction{
    80  		Type:   "heart",
    81  		UserID: owner.ID,
    82  	}
    83  
    84  	comment := &issues_model.Comment{
    85  		PosterID:  owner.ID,
    86  		Poster:    owner,
    87  		IssueID:   issue.ID,
    88  		Issue:     issue,
    89  		Reactions: []*issues_model.Reaction{reaction},
    90  	}
    91  
    92  	err := issues_model.InsertIssueComments(db.DefaultContext, []*issues_model.Comment{comment})
    93  	assert.NoError(t, err)
    94  
    95  	issueModified := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1})
    96  	assert.EqualValues(t, issue.NumComments+1, issueModified.NumComments)
    97  
    98  	unittest.CheckConsistencyFor(t, &issues_model.Issue{})
    99  }