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" `
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" `
}
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
}
var issueAttachments [ ] * Attachment
err := x . Where ( "issue_id > 0" ) . Find ( & issueAttachments )
assert . NoError ( t , err )
for _ , attach := range issueAttachments {
assert . Greater ( t , attach . RepoID , 0 )
assert . Greater ( t , attach . IssueID , 0 )
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 )
}
var releaseAttachments [ ] * Attachment
err = x . Where ( "release_id > 0" ) . Find ( & releaseAttachments )
assert . NoError ( t , err )
for _ , attach := range releaseAttachments {
assert . Greater ( t , attach . RepoID , 0 )
assert . Greater ( t , attach . IssueID , 0 )
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 )
}
}