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.

main_test.go 9.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Copyright 2018 Jonas Franz. All rights reserved.
  3. // SPDX-License-Identifier: MIT
  4. package migrations
  5. import (
  6. "testing"
  7. "time"
  8. "code.gitea.io/gitea/models/unittest"
  9. base "code.gitea.io/gitea/modules/migration"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestMain(m *testing.M) {
  13. unittest.MainTest(m)
  14. }
  15. func timePtr(t time.Time) *time.Time {
  16. return &t
  17. }
  18. func assertTimeEqual(t *testing.T, expected, actual time.Time) {
  19. assert.Equal(t, expected.UTC(), actual.UTC())
  20. }
  21. func assertTimePtrEqual(t *testing.T, expected, actual *time.Time) {
  22. if expected == nil {
  23. assert.Nil(t, actual)
  24. } else {
  25. assert.NotNil(t, actual)
  26. assertTimeEqual(t, *expected, *actual)
  27. }
  28. }
  29. func assertCommentEqual(t *testing.T, expected, actual *base.Comment) {
  30. assert.Equal(t, expected.IssueIndex, actual.IssueIndex)
  31. assert.Equal(t, expected.PosterID, actual.PosterID)
  32. assert.Equal(t, expected.PosterName, actual.PosterName)
  33. assert.Equal(t, expected.PosterEmail, actual.PosterEmail)
  34. assertTimeEqual(t, expected.Created, actual.Created)
  35. assertTimeEqual(t, expected.Updated, actual.Updated)
  36. assert.Equal(t, expected.Content, actual.Content)
  37. assertReactionsEqual(t, expected.Reactions, actual.Reactions)
  38. }
  39. func assertCommentsEqual(t *testing.T, expected, actual []*base.Comment) {
  40. if assert.Len(t, actual, len(expected)) {
  41. for i := range expected {
  42. assertCommentEqual(t, expected[i], actual[i])
  43. }
  44. }
  45. }
  46. func assertLabelEqual(t *testing.T, expected, actual *base.Label) {
  47. assert.Equal(t, expected.Name, actual.Name)
  48. assert.Equal(t, expected.Exclusive, actual.Exclusive)
  49. assert.Equal(t, expected.Color, actual.Color)
  50. assert.Equal(t, expected.Description, actual.Description)
  51. }
  52. func assertLabelsEqual(t *testing.T, expected, actual []*base.Label) {
  53. if assert.Len(t, actual, len(expected)) {
  54. for i := range expected {
  55. assertLabelEqual(t, expected[i], actual[i])
  56. }
  57. }
  58. }
  59. func assertMilestoneEqual(t *testing.T, expected, actual *base.Milestone) {
  60. assert.Equal(t, expected.Title, actual.Title)
  61. assert.Equal(t, expected.Description, actual.Description)
  62. assertTimePtrEqual(t, expected.Deadline, actual.Deadline)
  63. assertTimeEqual(t, expected.Created, actual.Created)
  64. assertTimePtrEqual(t, expected.Updated, actual.Updated)
  65. assertTimePtrEqual(t, expected.Closed, actual.Closed)
  66. assert.Equal(t, expected.State, actual.State)
  67. }
  68. func assertMilestonesEqual(t *testing.T, expected, actual []*base.Milestone) {
  69. if assert.Len(t, actual, len(expected)) {
  70. for i := range expected {
  71. assertMilestoneEqual(t, expected[i], actual[i])
  72. }
  73. }
  74. }
  75. func assertIssueEqual(t *testing.T, expected, actual *base.Issue) {
  76. assert.Equal(t, expected.Number, actual.Number)
  77. assert.Equal(t, expected.PosterID, actual.PosterID)
  78. assert.Equal(t, expected.PosterName, actual.PosterName)
  79. assert.Equal(t, expected.PosterEmail, actual.PosterEmail)
  80. assert.Equal(t, expected.Title, actual.Title)
  81. assert.Equal(t, expected.Content, actual.Content)
  82. assert.Equal(t, expected.Ref, actual.Ref)
  83. assert.Equal(t, expected.Milestone, actual.Milestone)
  84. assert.Equal(t, expected.State, actual.State)
  85. assert.Equal(t, expected.IsLocked, actual.IsLocked)
  86. assertTimeEqual(t, expected.Created, actual.Created)
  87. assertTimeEqual(t, expected.Updated, actual.Updated)
  88. assertTimePtrEqual(t, expected.Closed, actual.Closed)
  89. assertLabelsEqual(t, expected.Labels, actual.Labels)
  90. assertReactionsEqual(t, expected.Reactions, actual.Reactions)
  91. assert.ElementsMatch(t, expected.Assignees, actual.Assignees)
  92. }
  93. func assertIssuesEqual(t *testing.T, expected, actual []*base.Issue) {
  94. if assert.Len(t, actual, len(expected)) {
  95. for i := range expected {
  96. assertIssueEqual(t, expected[i], actual[i])
  97. }
  98. }
  99. }
  100. func assertPullRequestEqual(t *testing.T, expected, actual *base.PullRequest) {
  101. assert.Equal(t, expected.Number, actual.Number)
  102. assert.Equal(t, expected.Title, actual.Title)
  103. assert.Equal(t, expected.PosterID, actual.PosterID)
  104. assert.Equal(t, expected.PosterName, actual.PosterName)
  105. assert.Equal(t, expected.PosterEmail, actual.PosterEmail)
  106. assert.Equal(t, expected.Content, actual.Content)
  107. assert.Equal(t, expected.Milestone, actual.Milestone)
  108. assert.Equal(t, expected.State, actual.State)
  109. assertTimeEqual(t, expected.Created, actual.Created)
  110. assertTimeEqual(t, expected.Updated, actual.Updated)
  111. assertTimePtrEqual(t, expected.Closed, actual.Closed)
  112. assertLabelsEqual(t, expected.Labels, actual.Labels)
  113. assert.Equal(t, expected.PatchURL, actual.PatchURL)
  114. assert.Equal(t, expected.Merged, actual.Merged)
  115. assertTimePtrEqual(t, expected.MergedTime, actual.MergedTime)
  116. assert.Equal(t, expected.MergeCommitSHA, actual.MergeCommitSHA)
  117. assertPullRequestBranchEqual(t, expected.Head, actual.Head)
  118. assertPullRequestBranchEqual(t, expected.Base, actual.Base)
  119. assert.ElementsMatch(t, expected.Assignees, actual.Assignees)
  120. assert.Equal(t, expected.IsLocked, actual.IsLocked)
  121. assertReactionsEqual(t, expected.Reactions, actual.Reactions)
  122. }
  123. func assertPullRequestsEqual(t *testing.T, expected, actual []*base.PullRequest) {
  124. if assert.Len(t, actual, len(expected)) {
  125. for i := range expected {
  126. assertPullRequestEqual(t, expected[i], actual[i])
  127. }
  128. }
  129. }
  130. func assertPullRequestBranchEqual(t *testing.T, expected, actual base.PullRequestBranch) {
  131. assert.Equal(t, expected.CloneURL, actual.CloneURL)
  132. assert.Equal(t, expected.Ref, actual.Ref)
  133. assert.Equal(t, expected.SHA, actual.SHA)
  134. assert.Equal(t, expected.RepoName, actual.RepoName)
  135. assert.Equal(t, expected.OwnerName, actual.OwnerName)
  136. }
  137. func assertReactionEqual(t *testing.T, expected, actual *base.Reaction) {
  138. assert.Equal(t, expected.UserID, actual.UserID)
  139. assert.Equal(t, expected.UserName, actual.UserName)
  140. assert.Equal(t, expected.Content, actual.Content)
  141. }
  142. func assertReactionsEqual(t *testing.T, expected, actual []*base.Reaction) {
  143. if assert.Len(t, actual, len(expected)) {
  144. for i := range expected {
  145. assertReactionEqual(t, expected[i], actual[i])
  146. }
  147. }
  148. }
  149. func assertReleaseAssetEqual(t *testing.T, expected, actual *base.ReleaseAsset) {
  150. assert.Equal(t, expected.ID, actual.ID)
  151. assert.Equal(t, expected.Name, actual.Name)
  152. assert.Equal(t, expected.ContentType, actual.ContentType)
  153. assert.Equal(t, expected.Size, actual.Size)
  154. assert.Equal(t, expected.DownloadCount, actual.DownloadCount)
  155. assertTimeEqual(t, expected.Created, actual.Created)
  156. assertTimeEqual(t, expected.Updated, actual.Updated)
  157. assert.Equal(t, expected.DownloadURL, actual.DownloadURL)
  158. }
  159. func assertReleaseAssetsEqual(t *testing.T, expected, actual []*base.ReleaseAsset) {
  160. if assert.Len(t, actual, len(expected)) {
  161. for i := range expected {
  162. assertReleaseAssetEqual(t, expected[i], actual[i])
  163. }
  164. }
  165. }
  166. func assertReleaseEqual(t *testing.T, expected, actual *base.Release) {
  167. assert.Equal(t, expected.TagName, actual.TagName)
  168. assert.Equal(t, expected.TargetCommitish, actual.TargetCommitish)
  169. assert.Equal(t, expected.Name, actual.Name)
  170. assert.Equal(t, expected.Body, actual.Body)
  171. assert.Equal(t, expected.Draft, actual.Draft)
  172. assert.Equal(t, expected.Prerelease, actual.Prerelease)
  173. assert.Equal(t, expected.PublisherID, actual.PublisherID)
  174. assert.Equal(t, expected.PublisherName, actual.PublisherName)
  175. assert.Equal(t, expected.PublisherEmail, actual.PublisherEmail)
  176. assertReleaseAssetsEqual(t, expected.Assets, actual.Assets)
  177. assertTimeEqual(t, expected.Created, actual.Created)
  178. assertTimeEqual(t, expected.Published, actual.Published)
  179. }
  180. func assertReleasesEqual(t *testing.T, expected, actual []*base.Release) {
  181. if assert.Len(t, actual, len(expected)) {
  182. for i := range expected {
  183. assertReleaseEqual(t, expected[i], actual[i])
  184. }
  185. }
  186. }
  187. func assertRepositoryEqual(t *testing.T, expected, actual *base.Repository) {
  188. assert.Equal(t, expected.Name, actual.Name)
  189. assert.Equal(t, expected.Owner, actual.Owner)
  190. assert.Equal(t, expected.IsPrivate, actual.IsPrivate)
  191. assert.Equal(t, expected.IsMirror, actual.IsMirror)
  192. assert.Equal(t, expected.Description, actual.Description)
  193. assert.Equal(t, expected.CloneURL, actual.CloneURL)
  194. assert.Equal(t, expected.OriginalURL, actual.OriginalURL)
  195. assert.Equal(t, expected.DefaultBranch, actual.DefaultBranch)
  196. }
  197. func assertReviewEqual(t *testing.T, expected, actual *base.Review) {
  198. assert.Equal(t, expected.ID, actual.ID, "ID")
  199. assert.Equal(t, expected.IssueIndex, actual.IssueIndex, "IsssueIndex")
  200. assert.Equal(t, expected.ReviewerID, actual.ReviewerID, "ReviewerID")
  201. assert.Equal(t, expected.ReviewerName, actual.ReviewerName, "ReviewerName")
  202. assert.Equal(t, expected.Official, actual.Official, "Official")
  203. assert.Equal(t, expected.CommitID, actual.CommitID, "CommitID")
  204. assert.Equal(t, expected.Content, actual.Content, "Content")
  205. assert.WithinDuration(t, expected.CreatedAt, actual.CreatedAt, 10*time.Second)
  206. assert.Equal(t, expected.State, actual.State, "State")
  207. assertReviewCommentsEqual(t, expected.Comments, actual.Comments)
  208. }
  209. func assertReviewsEqual(t *testing.T, expected, actual []*base.Review) {
  210. if assert.Len(t, actual, len(expected)) {
  211. for i := range expected {
  212. assertReviewEqual(t, expected[i], actual[i])
  213. }
  214. }
  215. }
  216. func assertReviewCommentEqual(t *testing.T, expected, actual *base.ReviewComment) {
  217. assert.Equal(t, expected.ID, actual.ID)
  218. assert.Equal(t, expected.InReplyTo, actual.InReplyTo)
  219. assert.Equal(t, expected.Content, actual.Content)
  220. assert.Equal(t, expected.TreePath, actual.TreePath)
  221. assert.Equal(t, expected.DiffHunk, actual.DiffHunk)
  222. assert.Equal(t, expected.Position, actual.Position)
  223. assert.Equal(t, expected.Line, actual.Line)
  224. assert.Equal(t, expected.CommitID, actual.CommitID)
  225. assert.Equal(t, expected.PosterID, actual.PosterID)
  226. assertReactionsEqual(t, expected.Reactions, actual.Reactions)
  227. assertTimeEqual(t, expected.CreatedAt, actual.CreatedAt)
  228. assertTimeEqual(t, expected.UpdatedAt, actual.UpdatedAt)
  229. }
  230. func assertReviewCommentsEqual(t *testing.T, expected, actual []*base.ReviewComment) {
  231. if assert.Len(t, actual, len(expected)) {
  232. for i := range expected {
  233. assertReviewCommentEqual(t, expected[i], actual[i])
  234. }
  235. }
  236. }