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.

migrate_test.go 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package models
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. issues_model "code.gitea.io/gitea/models/issues"
  8. repo_model "code.gitea.io/gitea/models/repo"
  9. "code.gitea.io/gitea/models/unittest"
  10. user_model "code.gitea.io/gitea/models/user"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestMigrate_InsertMilestones(t *testing.T) {
  14. assert.NoError(t, unittest.PrepareTestDatabase())
  15. reponame := "repo1"
  16. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame})
  17. name := "milestonetest1"
  18. ms := &issues_model.Milestone{
  19. RepoID: repo.ID,
  20. Name: name,
  21. }
  22. err := InsertMilestones(ms)
  23. assert.NoError(t, err)
  24. unittest.AssertExistsAndLoadBean(t, ms)
  25. repoModified := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repo.ID})
  26. assert.EqualValues(t, repo.NumMilestones+1, repoModified.NumMilestones)
  27. unittest.CheckConsistencyFor(t, &issues_model.Milestone{})
  28. }
  29. func assertCreateIssues(t *testing.T, isPull bool) {
  30. assert.NoError(t, unittest.PrepareTestDatabase())
  31. reponame := "repo1"
  32. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame})
  33. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
  34. label := unittest.AssertExistsAndLoadBean(t, &issues_model.Label{ID: 1})
  35. milestone := unittest.AssertExistsAndLoadBean(t, &issues_model.Milestone{ID: 1})
  36. assert.EqualValues(t, milestone.ID, 1)
  37. reaction := &issues_model.Reaction{
  38. Type: "heart",
  39. UserID: owner.ID,
  40. }
  41. title := "issuetitle1"
  42. is := &issues_model.Issue{
  43. RepoID: repo.ID,
  44. MilestoneID: milestone.ID,
  45. Repo: repo,
  46. Title: title,
  47. Content: "issuecontent1",
  48. IsPull: isPull,
  49. PosterID: owner.ID,
  50. Poster: owner,
  51. IsClosed: true,
  52. Labels: []*issues_model.Label{label},
  53. Reactions: []*issues_model.Reaction{reaction},
  54. }
  55. err := InsertIssues(is)
  56. assert.NoError(t, err)
  57. i := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{Title: title})
  58. unittest.AssertExistsAndLoadBean(t, &issues_model.Reaction{Type: "heart", UserID: owner.ID, IssueID: i.ID})
  59. }
  60. func TestMigrate_CreateIssuesIsPullFalse(t *testing.T) {
  61. assertCreateIssues(t, false)
  62. }
  63. func TestMigrate_CreateIssuesIsPullTrue(t *testing.T) {
  64. assertCreateIssues(t, true)
  65. }
  66. func TestMigrate_InsertIssueComments(t *testing.T) {
  67. assert.NoError(t, unittest.PrepareTestDatabase())
  68. issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1})
  69. _ = issue.LoadRepo(db.DefaultContext)
  70. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID})
  71. reaction := &issues_model.Reaction{
  72. Type: "heart",
  73. UserID: owner.ID,
  74. }
  75. comment := &issues_model.Comment{
  76. PosterID: owner.ID,
  77. Poster: owner,
  78. IssueID: issue.ID,
  79. Issue: issue,
  80. Reactions: []*issues_model.Reaction{reaction},
  81. }
  82. err := InsertIssueComments([]*issues_model.Comment{comment})
  83. assert.NoError(t, err)
  84. issueModified := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1})
  85. assert.EqualValues(t, issue.NumComments+1, issueModified.NumComments)
  86. unittest.CheckConsistencyFor(t, &issues_model.Issue{})
  87. }
  88. func TestMigrate_InsertPullRequests(t *testing.T) {
  89. assert.NoError(t, unittest.PrepareTestDatabase())
  90. reponame := "repo1"
  91. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame})
  92. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
  93. i := &issues_model.Issue{
  94. RepoID: repo.ID,
  95. Repo: repo,
  96. Title: "title1",
  97. Content: "issuecontent1",
  98. IsPull: true,
  99. PosterID: owner.ID,
  100. Poster: owner,
  101. }
  102. p := &issues_model.PullRequest{
  103. Issue: i,
  104. }
  105. err := InsertPullRequests(p)
  106. assert.NoError(t, err)
  107. _ = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{IssueID: i.ID})
  108. unittest.CheckConsistencyFor(t, &issues_model.Issue{}, &issues_model.PullRequest{})
  109. }
  110. func TestMigrate_InsertReleases(t *testing.T) {
  111. assert.NoError(t, unittest.PrepareTestDatabase())
  112. a := &repo_model.Attachment{
  113. UUID: "a0eebc91-9c0c-4ef7-bb6e-6bb9bd380a12",
  114. }
  115. r := &repo_model.Release{
  116. Attachments: []*repo_model.Attachment{a},
  117. }
  118. err := InsertReleases(r)
  119. assert.NoError(t, err)
  120. }