2017-07-27 04:20:38 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2017-07-27 04:20:38 +03:00
2022-06-13 12:37:59 +03:00
package issues_test
2017-07-27 04:20:38 +03:00
import (
"testing"
"time"
2022-01-20 02:26:57 +03:00
"code.gitea.io/gitea/models/db"
2022-06-13 12:37:59 +03:00
issues_model "code.gitea.io/gitea/models/issues"
2021-12-10 04:27:50 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2021-11-17 15:34:35 +03:00
2017-07-27 04:20:38 +03:00
"github.com/stretchr/testify/assert"
)
func TestCreateComment ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-07-27 04:20:38 +03:00
2022-08-16 05:22:25 +03:00
issue := unittest . AssertExistsAndLoadBean ( t , & issues_model . Issue { } )
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : issue . RepoID } )
doer := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : repo . OwnerID } )
2017-07-27 04:20:38 +03:00
now := time . Now ( ) . Unix ( )
2022-12-10 05:46:31 +03:00
comment , err := issues_model . CreateComment ( db . DefaultContext , & issues_model . CreateCommentOptions {
2022-06-13 12:37:59 +03:00
Type : issues_model . CommentTypeComment ,
2017-07-27 04:20:38 +03:00
Doer : doer ,
Repo : repo ,
Issue : issue ,
Content : "Hello" ,
} )
assert . NoError ( t , err )
then := time . Now ( ) . Unix ( )
2022-06-13 12:37:59 +03:00
assert . EqualValues ( t , issues_model . CommentTypeComment , comment . Type )
2017-07-27 04:20:38 +03:00
assert . EqualValues ( t , "Hello" , comment . Content )
assert . EqualValues ( t , issue . ID , comment . IssueID )
assert . EqualValues ( t , doer . ID , comment . PosterID )
2021-11-16 11:53:21 +03:00
unittest . AssertInt64InRange ( t , now , then , int64 ( comment . CreatedUnix ) )
unittest . AssertExistsAndLoadBean ( t , comment ) // assert actually added to DB
2017-07-27 04:20:38 +03:00
2022-08-16 05:22:25 +03:00
updatedIssue := unittest . AssertExistsAndLoadBean ( t , & issues_model . Issue { ID : issue . ID } )
2021-11-16 11:53:21 +03:00
unittest . AssertInt64InRange ( t , now , then , int64 ( updatedIssue . UpdatedUnix ) )
2017-07-27 04:20:38 +03:00
}
2018-08-06 07:43:22 +03:00
func TestFetchCodeComments ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2018-08-06 07:43:22 +03:00
2022-08-16 05:22:25 +03:00
issue := unittest . AssertExistsAndLoadBean ( t , & issues_model . Issue { ID : 2 } )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 1 } )
2023-06-21 19:08:12 +03:00
res , err := issues_model . FetchCodeComments ( db . DefaultContext , issue , user , false )
2018-08-06 07:43:22 +03:00
assert . NoError ( t , err )
assert . Contains ( t , res , "README.md" )
assert . Contains ( t , res [ "README.md" ] , int64 ( 4 ) )
assert . Len ( t , res [ "README.md" ] [ 4 ] , 1 )
assert . Equal ( t , int64 ( 4 ) , res [ "README.md" ] [ 4 ] [ 0 ] . ID )
2022-08-16 05:22:25 +03:00
user2 := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } )
2023-06-21 19:08:12 +03:00
res , err = issues_model . FetchCodeComments ( db . DefaultContext , issue , user2 , false )
2018-08-06 07:43:22 +03:00
assert . NoError ( t , err )
assert . Len ( t , res , 1 )
}
2023-01-19 05:14:56 +03:00
func TestAsCommentType ( t * testing . T ) {
2023-04-20 09:39:44 +03:00
assert . Equal ( t , issues_model . CommentType ( 0 ) , issues_model . CommentTypeComment )
assert . Equal ( t , issues_model . CommentTypeUndefined , issues_model . AsCommentType ( "" ) )
assert . Equal ( t , issues_model . CommentTypeUndefined , issues_model . AsCommentType ( "nonsense" ) )
2023-01-19 05:14:56 +03:00
assert . Equal ( t , issues_model . CommentTypeComment , issues_model . AsCommentType ( "comment" ) )
assert . Equal ( t , issues_model . CommentTypePRUnScheduledToAutoMerge , issues_model . AsCommentType ( "pull_cancel_scheduled_merge" ) )
}
2023-09-09 00:09:23 +03:00
func TestMigrate_InsertIssueComments ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
issue := unittest . AssertExistsAndLoadBean ( t , & issues_model . Issue { ID : 1 } )
_ = issue . LoadRepo ( db . DefaultContext )
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : issue . Repo . OwnerID } )
reaction := & issues_model . Reaction {
Type : "heart" ,
UserID : owner . ID ,
}
comment := & issues_model . Comment {
PosterID : owner . ID ,
Poster : owner ,
IssueID : issue . ID ,
Issue : issue ,
Reactions : [ ] * issues_model . Reaction { reaction } ,
}
2023-09-29 15:12:54 +03:00
err := issues_model . InsertIssueComments ( db . DefaultContext , [ ] * issues_model . Comment { comment } )
2023-09-09 00:09:23 +03:00
assert . NoError ( t , err )
issueModified := unittest . AssertExistsAndLoadBean ( t , & issues_model . Issue { ID : 1 } )
assert . EqualValues ( t , issue . NumComments + 1 , issueModified . NumComments )
unittest . CheckConsistencyFor ( t , & issues_model . Issue { } )
}