2023-12-12 13:01:17 +08:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package integration
import (
2024-05-08 21:44:57 +08:00
"fmt"
2023-12-12 13:01:17 +08:00
"net/http"
"testing"
2024-05-08 21:44:57 +08:00
"code.gitea.io/gitea/models/db"
project_model "code.gitea.io/gitea/models/project"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/models/unittest"
2023-12-12 13:01:17 +08:00
"code.gitea.io/gitea/tests"
2024-05-08 21:44:57 +08:00
"github.com/stretchr/testify/assert"
2023-12-12 13:01:17 +08:00
)
func TestPrivateRepoProject ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
// not logged in user
req := NewRequest ( t , "GET" , "/user31/-/projects" )
MakeRequest ( t , req , http . StatusNotFound )
sess := loginUser ( t , "user1" )
req = NewRequest ( t , "GET" , "/user31/-/projects" )
sess . MakeRequest ( t , req , http . StatusOK )
}
2024-05-08 21:44:57 +08:00
func TestMoveRepoProjectColumns ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
repo2 := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 2 } )
projectsUnit := repo2 . MustGetUnit ( db . DefaultContext , unit . TypeProjects )
assert . True ( t , projectsUnit . ProjectsConfig ( ) . IsProjectsAllowed ( repo_model . ProjectsModeRepo ) )
project1 := project_model . Project {
2024-05-27 16:59:54 +08:00
Title : "new created project" ,
RepoID : repo2 . ID ,
Type : project_model . TypeRepository ,
TemplateType : project_model . TemplateTypeNone ,
2024-05-08 21:44:57 +08:00
}
err := project_model . NewProject ( db . DefaultContext , & project1 )
assert . NoError ( t , err )
for i := 0 ; i < 3 ; i ++ {
2024-05-27 16:59:54 +08:00
err = project_model . NewColumn ( db . DefaultContext , & project_model . Column {
2024-05-08 21:44:57 +08:00
Title : fmt . Sprintf ( "column %d" , i + 1 ) ,
ProjectID : project1 . ID ,
} )
assert . NoError ( t , err )
}
2024-05-27 16:59:54 +08:00
columns , err := project1 . GetColumns ( db . DefaultContext )
2024-05-08 21:44:57 +08:00
assert . NoError ( t , err )
assert . Len ( t , columns , 3 )
assert . EqualValues ( t , 0 , columns [ 0 ] . Sorting )
assert . EqualValues ( t , 1 , columns [ 1 ] . Sorting )
assert . EqualValues ( t , 2 , columns [ 2 ] . Sorting )
sess := loginUser ( t , "user1" )
req := NewRequest ( t , "GET" , fmt . Sprintf ( "/%s/projects/%d" , repo2 . FullName ( ) , project1 . ID ) )
resp := sess . MakeRequest ( t , req , http . StatusOK )
htmlDoc := NewHTMLParser ( t , resp . Body )
req = NewRequestWithJSON ( t , "POST" , fmt . Sprintf ( "/%s/projects/%d/move?_csrf=" + htmlDoc . GetCSRF ( ) , repo2 . FullName ( ) , project1 . ID ) , map [ string ] any {
"columns" : [ ] map [ string ] any {
{ "columnID" : columns [ 1 ] . ID , "sorting" : 0 } ,
{ "columnID" : columns [ 2 ] . ID , "sorting" : 1 } ,
{ "columnID" : columns [ 0 ] . ID , "sorting" : 2 } ,
} ,
} )
sess . MakeRequest ( t , req , http . StatusOK )
2024-05-27 16:59:54 +08:00
columnsAfter , err := project1 . GetColumns ( db . DefaultContext )
2024-05-08 21:44:57 +08:00
assert . NoError ( t , err )
assert . Len ( t , columns , 3 )
assert . EqualValues ( t , columns [ 1 ] . ID , columnsAfter [ 0 ] . ID )
assert . EqualValues ( t , columns [ 2 ] . ID , columnsAfter [ 1 ] . ID )
assert . EqualValues ( t , columns [ 0 ] . ID , columnsAfter [ 2 ] . ID )
assert . NoError ( t , project_model . DeleteProjectByID ( db . DefaultContext , project1 . ID ) )
}