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