code.gitea.io/gitea@v1.21.7/models/migrations/v1_16/v193_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package v1_16 //nolint 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/migrations/base" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func Test_AddRepoIDForAttachment(t *testing.T) { 15 type Attachment struct { 16 ID int64 `xorm:"pk autoincr"` 17 UUID string `xorm:"uuid UNIQUE"` 18 RepoID int64 `xorm:"INDEX"` // this should not be zero 19 IssueID int64 `xorm:"INDEX"` // maybe zero when creating 20 ReleaseID int64 `xorm:"INDEX"` // maybe zero when creating 21 UploaderID int64 `xorm:"INDEX DEFAULT 0"` 22 } 23 24 type Issue struct { 25 ID int64 26 RepoID int64 27 } 28 29 type Release struct { 30 ID int64 31 RepoID int64 32 } 33 34 // Prepare and load the testing database 35 x, deferrable := base.PrepareTestEnv(t, 0, new(Attachment), new(Issue), new(Release)) 36 defer deferrable() 37 if x == nil || t.Failed() { 38 return 39 } 40 41 // Run the migration 42 if err := AddRepoIDForAttachment(x); err != nil { 43 assert.NoError(t, err) 44 return 45 } 46 47 var issueAttachments []*Attachment 48 err := x.Where("issue_id > 0").Find(&issueAttachments) 49 assert.NoError(t, err) 50 for _, attach := range issueAttachments { 51 assert.Greater(t, attach.RepoID, 0) 52 assert.Greater(t, attach.IssueID, 0) 53 var issue Issue 54 has, err := x.ID(attach.IssueID).Get(&issue) 55 assert.NoError(t, err) 56 assert.True(t, has) 57 assert.EqualValues(t, attach.RepoID, issue.RepoID) 58 } 59 60 var releaseAttachments []*Attachment 61 err = x.Where("release_id > 0").Find(&releaseAttachments) 62 assert.NoError(t, err) 63 for _, attach := range releaseAttachments { 64 assert.Greater(t, attach.RepoID, 0) 65 assert.Greater(t, attach.IssueID, 0) 66 var release Release 67 has, err := x.ID(attach.ReleaseID).Get(&release) 68 assert.NoError(t, err) 69 assert.True(t, has) 70 assert.EqualValues(t, attach.RepoID, release.RepoID) 71 } 72 }