2021-09-08 23:19:30 +08:00
// Copyright 2021 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2021-09-08 23:19:30 +08:00
2022-11-02 16:54:36 +08:00
package v1_16 //nolint
2021-09-08 23:19:30 +08:00
import (
"testing"
2022-11-02 16:54:36 +08:00
"code.gitea.io/gitea/models/migrations/base"
2021-09-08 23:19:30 +08:00
"github.com/stretchr/testify/assert"
)
2022-11-02 16:54:36 +08:00
func Test_AddRepoIDForAttachment ( t * testing . T ) {
2021-09-08 23:19:30 +08:00
type Attachment struct {
ID int64 ` xorm:"pk autoincr" `
UUID string ` xorm:"uuid UNIQUE" `
IssueID int64 ` xorm:"INDEX" ` // maybe zero when creating
ReleaseID int64 ` xorm:"INDEX" ` // maybe zero when creating
UploaderID int64 ` xorm:"INDEX DEFAULT 0" `
}
type Issue struct {
ID int64
RepoID int64
}
type Release struct {
ID int64
RepoID int64
}
// Prepare and load the testing database
2022-11-02 16:54:36 +08:00
x , deferrable := base . PrepareTestEnv ( t , 0 , new ( Attachment ) , new ( Issue ) , new ( Release ) )
2021-09-08 23:19:30 +08:00
defer deferrable ( )
if x == nil || t . Failed ( ) {
return
}
// Run the migration
2022-11-02 16:54:36 +08:00
if err := AddRepoIDForAttachment ( x ) ; err != nil {
2021-09-08 23:19:30 +08:00
assert . NoError ( t , err )
return
}
2024-03-08 00:43:32 +08:00
type NewAttachment struct {
ID int64 ` xorm:"pk autoincr" `
UUID string ` xorm:"uuid UNIQUE" `
RepoID int64 ` xorm:"INDEX" ` // this should not be zero
IssueID int64 ` xorm:"INDEX" ` // maybe zero when creating
ReleaseID int64 ` xorm:"INDEX" ` // maybe zero when creating
UploaderID int64 ` xorm:"INDEX DEFAULT 0" `
}
var issueAttachments [ ] * NewAttachment
err := x . Table ( "attachment" ) . Where ( "issue_id > 0" ) . Find ( & issueAttachments )
2021-09-08 23:19:30 +08:00
assert . NoError ( t , err )
for _ , attach := range issueAttachments {
2024-12-15 11:41:29 +01:00
assert . Positive ( t , attach . RepoID )
assert . Positive ( t , attach . IssueID )
2021-09-08 23:19:30 +08:00
var issue Issue
has , err := x . ID ( attach . IssueID ) . Get ( & issue )
assert . NoError ( t , err )
assert . True ( t , has )
assert . EqualValues ( t , attach . RepoID , issue . RepoID )
}
2024-03-08 00:43:32 +08:00
var releaseAttachments [ ] * NewAttachment
err = x . Table ( "attachment" ) . Where ( "release_id > 0" ) . Find ( & releaseAttachments )
2021-09-08 23:19:30 +08:00
assert . NoError ( t , err )
for _ , attach := range releaseAttachments {
2024-12-15 11:41:29 +01:00
assert . Positive ( t , attach . RepoID )
assert . Positive ( t , attach . ReleaseID )
2021-09-08 23:19:30 +08:00
var release Release
has , err := x . ID ( attach . ReleaseID ) . Get ( & release )
assert . NoError ( t , err )
assert . True ( t , has )
assert . EqualValues ( t , attach . RepoID , release . RepoID )
}
}