You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

project_test.go 2.7KB

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