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

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