code.gitea.io/gitea@v1.22.3/services/migrations/main_test.go (about)

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