2017-10-26 03:49:16 +03:00
// 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.
2022-06-12 18:51:54 +03:00
package git_test
2017-10-26 03:49:16 +03:00
import (
"testing"
2022-04-28 14:48:48 +03:00
"code.gitea.io/gitea/models/db"
2022-06-12 18:51:54 +03:00
git_model "code.gitea.io/gitea/models/git"
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-17 15:34:35 +03:00
2017-10-26 03:49:16 +03:00
"github.com/stretchr/testify/assert"
)
func TestAddDeletedBranch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2022-06-12 18:51:54 +03:00
firstBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 1 } ) . ( * git_model . DeletedBranch )
2017-11-04 16:31:59 +03:00
2022-06-12 18:51:54 +03:00
assert . Error ( t , git_model . AddDeletedBranch ( repo . ID , firstBranch . Name , firstBranch . Commit , firstBranch . DeletedByID ) )
assert . NoError ( t , git_model . AddDeletedBranch ( repo . ID , "test" , "5655464564554545466464656" , int64 ( 1 ) ) )
2017-10-26 03:49:16 +03:00
}
2017-11-04 16:31:59 +03:00
2017-10-26 03:49:16 +03:00
func TestGetDeletedBranches ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2017-10-26 03:49:16 +03:00
2022-06-12 18:51:54 +03:00
branches , err := git_model . GetDeletedBranches ( repo . ID )
2017-10-26 03:49:16 +03:00
assert . NoError ( t , err )
assert . Len ( t , branches , 2 )
}
func TestGetDeletedBranch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-06-12 18:51:54 +03:00
firstBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 1 } ) . ( * git_model . DeletedBranch )
2017-11-04 16:31:59 +03:00
2017-10-26 03:49:16 +03:00
assert . NotNil ( t , getDeletedBranch ( t , firstBranch ) )
}
func TestDeletedBranchLoadUser ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-11-04 16:31:59 +03:00
2022-06-12 18:51:54 +03:00
firstBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 1 } ) . ( * git_model . DeletedBranch )
secondBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 2 } ) . ( * git_model . DeletedBranch )
2017-11-04 16:31:59 +03:00
2017-10-26 03:49:16 +03:00
branch := getDeletedBranch ( t , firstBranch )
assert . Nil ( t , branch . DeletedBy )
branch . LoadUser ( )
assert . NotNil ( t , branch . DeletedBy )
assert . Equal ( t , "user1" , branch . DeletedBy . Name )
branch = getDeletedBranch ( t , secondBranch )
assert . Nil ( t , branch . DeletedBy )
branch . LoadUser ( )
assert . NotNil ( t , branch . DeletedBy )
assert . Equal ( t , "Ghost" , branch . DeletedBy . Name )
}
func TestRemoveDeletedBranch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2017-10-26 03:49:16 +03:00
2022-06-12 18:51:54 +03:00
firstBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 1 } ) . ( * git_model . DeletedBranch )
2017-11-04 16:31:59 +03:00
2022-06-12 18:51:54 +03:00
err := git_model . RemoveDeletedBranchByID ( repo . ID , 1 )
2017-10-26 03:49:16 +03:00
assert . NoError ( t , err )
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , firstBranch )
2022-06-12 18:51:54 +03:00
unittest . AssertExistsAndLoadBean ( t , & git_model . DeletedBranch { ID : 2 } )
2017-10-26 03:49:16 +03:00
}
2022-06-12 18:51:54 +03:00
func getDeletedBranch ( t * testing . T , branch * git_model . DeletedBranch ) * git_model . DeletedBranch {
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2017-10-26 03:49:16 +03:00
2022-06-12 18:51:54 +03:00
deletedBranch , err := git_model . GetDeletedBranchByID ( repo . ID , branch . ID )
2017-10-26 03:49:16 +03:00
assert . NoError ( t , err )
assert . Equal ( t , branch . ID , deletedBranch . ID )
assert . Equal ( t , branch . Name , deletedBranch . Name )
assert . Equal ( t , branch . Commit , deletedBranch . Commit )
assert . Equal ( t , branch . DeletedByID , deletedBranch . DeletedByID )
return deletedBranch
}
2021-10-08 20:03:04 +03:00
func TestFindRenamedBranch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-06-12 18:51:54 +03:00
branch , exist , err := git_model . FindRenamedBranch ( 1 , "dev" )
2021-10-08 20:03:04 +03:00
assert . NoError ( t , err )
assert . Equal ( t , true , exist )
assert . Equal ( t , "master" , branch . To )
2022-06-12 18:51:54 +03:00
_ , exist , err = git_model . FindRenamedBranch ( 1 , "unknow" )
2021-10-08 20:03:04 +03:00
assert . NoError ( t , err )
assert . Equal ( t , false , exist )
}
func TestRenameBranch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo1 := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2021-10-08 20:03:04 +03:00
_isDefault := false
2022-04-28 14:48:48 +03:00
ctx , committer , err := db . TxContext ( )
defer committer . Close ( )
assert . NoError ( t , err )
2022-06-12 18:51:54 +03:00
assert . NoError ( t , git_model . UpdateProtectBranch ( ctx , repo1 , & git_model . ProtectedBranch {
2021-10-08 20:03:04 +03:00
RepoID : repo1 . ID ,
BranchName : "master" ,
2022-06-12 18:51:54 +03:00
} , git_model . WhitelistOptions { } ) )
2022-04-28 14:48:48 +03:00
assert . NoError ( t , committer . Commit ( ) )
2021-10-08 20:03:04 +03:00
2022-06-12 18:51:54 +03:00
assert . NoError ( t , git_model . RenameBranch ( repo1 , "master" , "main" , func ( isDefault bool ) error {
2021-10-08 20:03:04 +03:00
_isDefault = isDefault
return nil
} ) )
assert . Equal ( t , true , _isDefault )
2021-12-10 04:27:50 +03:00
repo1 = unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2021-10-08 20:03:04 +03:00
assert . Equal ( t , "main" , repo1 . DefaultBranch )
2022-06-13 12:37:59 +03:00
pull := unittest . AssertExistsAndLoadBean ( t , & issues_model . PullRequest { ID : 1 } ) . ( * issues_model . PullRequest ) // merged
2021-10-08 20:03:04 +03:00
assert . Equal ( t , "master" , pull . BaseBranch )
2022-06-13 12:37:59 +03:00
pull = unittest . AssertExistsAndLoadBean ( t , & issues_model . PullRequest { ID : 2 } ) . ( * issues_model . PullRequest ) // open
2021-10-08 20:03:04 +03:00
assert . Equal ( t , "main" , pull . BaseBranch )
2022-06-12 18:51:54 +03:00
renamedBranch := unittest . AssertExistsAndLoadBean ( t , & git_model . RenamedBranch { ID : 2 } ) . ( * git_model . RenamedBranch )
2021-10-08 20:03:04 +03:00
assert . Equal ( t , "master" , renamedBranch . From )
assert . Equal ( t , "main" , renamedBranch . To )
assert . Equal ( t , int64 ( 1 ) , renamedBranch . RepoID )
2022-06-12 18:51:54 +03:00
unittest . AssertExistsAndLoadBean ( t , & git_model . ProtectedBranch {
2021-10-08 20:03:04 +03:00
RepoID : repo1 . ID ,
BranchName : "main" ,
} )
}
2021-11-08 18:45:37 +03:00
func TestOnlyGetDeletedBranchOnCorrectRepo ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-08 18:45:37 +03:00
// Get deletedBranch with ID of 1 on repo with ID 2.
// This should return a nil branch as this deleted branch
// is actually on repo with ID 1.
2021-12-10 04:27:50 +03:00
repo2 := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 2 } ) . ( * repo_model . Repository )
2021-11-08 18:45:37 +03:00
2022-06-12 18:51:54 +03:00
deletedBranch , err := git_model . GetDeletedBranchByID ( repo2 . ID , 1 )
2021-11-08 18:45:37 +03:00
// Expect no error, and the returned branch is nil.
assert . NoError ( t , err )
assert . Nil ( t , deletedBranch )
// Now get the deletedBranch with ID of 1 on repo with ID 1.
// This should return the deletedBranch.
2021-12-10 04:27:50 +03:00
repo1 := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2021-11-08 18:45:37 +03:00
2022-06-12 18:51:54 +03:00
deletedBranch , err = git_model . GetDeletedBranchByID ( repo1 . ID , 1 )
2021-11-08 18:45:37 +03:00
// Expect no error, and the returned branch to be not nil.
assert . NoError ( t , err )
assert . NotNil ( t , deletedBranch )
}