code.gitea.io/gitea@v1.22.3/tests/integration/project_test.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package integration
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  	"testing"
    10  
    11  	"code.gitea.io/gitea/models/db"
    12  	project_model "code.gitea.io/gitea/models/project"
    13  	repo_model "code.gitea.io/gitea/models/repo"
    14  	"code.gitea.io/gitea/models/unit"
    15  	"code.gitea.io/gitea/models/unittest"
    16  	"code.gitea.io/gitea/tests"
    17  
    18  	"github.com/stretchr/testify/assert"
    19  )
    20  
    21  func TestPrivateRepoProject(t *testing.T) {
    22  	defer tests.PrepareTestEnv(t)()
    23  
    24  	// not logged in user
    25  	req := NewRequest(t, "GET", "/user31/-/projects")
    26  	MakeRequest(t, req, http.StatusNotFound)
    27  
    28  	sess := loginUser(t, "user1")
    29  	req = NewRequest(t, "GET", "/user31/-/projects")
    30  	sess.MakeRequest(t, req, http.StatusOK)
    31  }
    32  
    33  func TestMoveRepoProjectColumns(t *testing.T) {
    34  	defer tests.PrepareTestEnv(t)()
    35  
    36  	repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
    37  
    38  	projectsUnit := repo2.MustGetUnit(db.DefaultContext, unit.TypeProjects)
    39  	assert.True(t, projectsUnit.ProjectsConfig().IsProjectsAllowed(repo_model.ProjectsModeRepo))
    40  
    41  	project1 := project_model.Project{
    42  		Title:     "new created project",
    43  		RepoID:    repo2.ID,
    44  		Type:      project_model.TypeRepository,
    45  		BoardType: project_model.BoardTypeNone,
    46  	}
    47  	err := project_model.NewProject(db.DefaultContext, &project1)
    48  	assert.NoError(t, err)
    49  
    50  	for i := 0; i < 3; i++ {
    51  		err = project_model.NewBoard(db.DefaultContext, &project_model.Board{
    52  			Title:     fmt.Sprintf("column %d", i+1),
    53  			ProjectID: project1.ID,
    54  		})
    55  		assert.NoError(t, err)
    56  	}
    57  
    58  	columns, err := project1.GetBoards(db.DefaultContext)
    59  	assert.NoError(t, err)
    60  	assert.Len(t, columns, 3)
    61  	assert.EqualValues(t, 0, columns[0].Sorting)
    62  	assert.EqualValues(t, 1, columns[1].Sorting)
    63  	assert.EqualValues(t, 2, columns[2].Sorting)
    64  
    65  	sess := loginUser(t, "user1")
    66  	req := NewRequest(t, "GET", fmt.Sprintf("/%s/projects/%d", repo2.FullName(), project1.ID))
    67  	resp := sess.MakeRequest(t, req, http.StatusOK)
    68  	htmlDoc := NewHTMLParser(t, resp.Body)
    69  
    70  	req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s/projects/%d/move?_csrf="+htmlDoc.GetCSRF(), repo2.FullName(), project1.ID), map[string]any{
    71  		"columns": []map[string]any{
    72  			{"columnID": columns[1].ID, "sorting": 0},
    73  			{"columnID": columns[2].ID, "sorting": 1},
    74  			{"columnID": columns[0].ID, "sorting": 2},
    75  		},
    76  	})
    77  	sess.MakeRequest(t, req, http.StatusOK)
    78  
    79  	columnsAfter, err := project1.GetBoards(db.DefaultContext)
    80  	assert.NoError(t, err)
    81  	assert.Len(t, columns, 3)
    82  	assert.EqualValues(t, columns[1].ID, columnsAfter[0].ID)
    83  	assert.EqualValues(t, columns[2].ID, columnsAfter[1].ID)
    84  	assert.EqualValues(t, columns[0].ID, columnsAfter[2].ID)
    85  
    86  	assert.NoError(t, project_model.DeleteProjectByID(db.DefaultContext, project1.ID))
    87  }