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.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package project
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. "code.gitea.io/gitea/models/unittest"
  8. "code.gitea.io/gitea/modules/timeutil"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestIsProjectTypeValid(t *testing.T) {
  12. const UnknownType Type = 15
  13. cases := []struct {
  14. typ Type
  15. valid bool
  16. }{
  17. {TypeIndividual, true},
  18. {TypeRepository, true},
  19. {TypeOrganization, true},
  20. {UnknownType, false},
  21. }
  22. for _, v := range cases {
  23. assert.Equal(t, v.valid, IsTypeValid(v.typ))
  24. }
  25. }
  26. func TestGetProjects(t *testing.T) {
  27. assert.NoError(t, unittest.PrepareTestDatabase())
  28. projects, err := db.Find[Project](db.DefaultContext, SearchOptions{RepoID: 1})
  29. assert.NoError(t, err)
  30. // 1 value for this repo exists in the fixtures
  31. assert.Len(t, projects, 1)
  32. projects, err = db.Find[Project](db.DefaultContext, SearchOptions{RepoID: 3})
  33. assert.NoError(t, err)
  34. // 1 value for this repo exists in the fixtures
  35. assert.Len(t, projects, 1)
  36. }
  37. func TestProject(t *testing.T) {
  38. assert.NoError(t, unittest.PrepareTestDatabase())
  39. project := &Project{
  40. Type: TypeRepository,
  41. BoardType: BoardTypeBasicKanban,
  42. CardType: CardTypeTextOnly,
  43. Title: "New Project",
  44. RepoID: 1,
  45. CreatedUnix: timeutil.TimeStampNow(),
  46. CreatorID: 2,
  47. }
  48. assert.NoError(t, NewProject(db.DefaultContext, project))
  49. _, err := GetProjectByID(db.DefaultContext, project.ID)
  50. assert.NoError(t, err)
  51. // Update project
  52. project.Title = "Updated title"
  53. assert.NoError(t, UpdateProject(db.DefaultContext, project))
  54. projectFromDB, err := GetProjectByID(db.DefaultContext, project.ID)
  55. assert.NoError(t, err)
  56. assert.Equal(t, project.Title, projectFromDB.Title)
  57. assert.NoError(t, ChangeProjectStatus(db.DefaultContext, project, true))
  58. // Retrieve from DB afresh to check if it is truly closed
  59. projectFromDB, err = GetProjectByID(db.DefaultContext, project.ID)
  60. assert.NoError(t, err)
  61. assert.True(t, projectFromDB.IsClosed)
  62. }
  63. func TestProjectsSort(t *testing.T) {
  64. assert.NoError(t, unittest.PrepareTestDatabase())
  65. tests := []struct {
  66. sortType string
  67. wants []int64
  68. }{
  69. {
  70. sortType: "default",
  71. wants: []int64{1, 3, 2, 6, 5, 4},
  72. },
  73. {
  74. sortType: "oldest",
  75. wants: []int64{4, 5, 6, 2, 3, 1},
  76. },
  77. {
  78. sortType: "recentupdate",
  79. wants: []int64{1, 3, 2, 6, 5, 4},
  80. },
  81. {
  82. sortType: "leastupdate",
  83. wants: []int64{4, 5, 6, 2, 3, 1},
  84. },
  85. }
  86. for _, tt := range tests {
  87. projects, count, err := db.FindAndCount[Project](db.DefaultContext, SearchOptions{
  88. OrderBy: GetSearchOrderByBySortType(tt.sortType),
  89. })
  90. assert.NoError(t, err)
  91. assert.EqualValues(t, int64(6), count)
  92. if assert.Len(t, projects, 6) {
  93. for i := range projects {
  94. assert.EqualValues(t, tt.wants[i], projects[i].ID)
  95. }
  96. }
  97. }
  98. }