code.gitea.io/gitea@v1.22.3/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 IssueID int64 `xorm:"INDEX"` // maybe zero when creating 19 ReleaseID int64 `xorm:"INDEX"` // maybe zero when creating 20 UploaderID int64 `xorm:"INDEX DEFAULT 0"` 21 } 22 23 type Issue struct { 24 ID int64 25 RepoID int64 26 } 27 28 type Release struct { 29 ID int64 30 RepoID int64 31 } 32 33 // Prepare and load the testing database 34 x, deferrable := base.PrepareTestEnv(t, 0, new(Attachment), new(Issue), new(Release)) 35 defer deferrable() 36 if x == nil || t.Failed() { 37 return 38 } 39 40 // Run the migration 41 if err := AddRepoIDForAttachment(x); err != nil { 42 assert.NoError(t, err) 43 return 44 } 45 46 type NewAttachment struct { 47 ID int64 `xorm:"pk autoincr"` 48 UUID string `xorm:"uuid UNIQUE"` 49 RepoID int64 `xorm:"INDEX"` // this should not be zero 50 IssueID int64 `xorm:"INDEX"` // maybe zero when creating 51 ReleaseID int64 `xorm:"INDEX"` // maybe zero when creating 52 UploaderID int64 `xorm:"INDEX DEFAULT 0"` 53 } 54 55 var issueAttachments []*NewAttachment 56 err := x.Table("attachment").Where("issue_id > 0").Find(&issueAttachments) 57 assert.NoError(t, err) 58 for _, attach := range issueAttachments { 59 assert.Greater(t, attach.RepoID, int64(0)) 60 assert.Greater(t, attach.IssueID, int64(0)) 61 var issue Issue 62 has, err := x.ID(attach.IssueID).Get(&issue) 63 assert.NoError(t, err) 64 assert.True(t, has) 65 assert.EqualValues(t, attach.RepoID, issue.RepoID) 66 } 67 68 var releaseAttachments []*NewAttachment 69 err = x.Table("attachment").Where("release_id > 0").Find(&releaseAttachments) 70 assert.NoError(t, err) 71 for _, attach := range releaseAttachments { 72 assert.Greater(t, attach.RepoID, int64(0)) 73 assert.Greater(t, attach.ReleaseID, int64(0)) 74 var release Release 75 has, err := x.ID(attach.ReleaseID).Get(&release) 76 assert.NoError(t, err) 77 assert.True(t, has) 78 assert.EqualValues(t, attach.RepoID, release.RepoID) 79 } 80 }