mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-23 03:11:22 +02:00
Migrations should never use model structs directly, because the model structs can be different in different releases. e.g. if one migration uses "User" model, it works in the early releases, then one day, when the User model changes, the migration breaks because it will use the new (incorrect) User model, it should only use the old User model. The same to "modules/structs". --------- Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: delvh <dev.lh@web.de>
65 lines
2.4 KiB
Go
65 lines
2.4 KiB
Go
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v1_25
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gitea.dev/modelmigration/migrationtest"
|
|
"gitea.dev/modules/setting"
|
|
"gitea.dev/modules/timeutil"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_UseLongTextInSomeColumnsAndFixBugs(t *testing.T) {
|
|
if !setting.Database.Type.IsMySQL() {
|
|
t.Skip("Only MySQL needs to change from TEXT to LONGTEXT")
|
|
}
|
|
|
|
type ReviewState struct {
|
|
ID int64 `xorm:"pk autoincr"`
|
|
UserID int64 `xorm:"NOT NULL UNIQUE(pull_commit_user)"`
|
|
PullID int64 `xorm:"NOT NULL INDEX UNIQUE(pull_commit_user) DEFAULT 0"` // Which PR was the review on?
|
|
CommitSHA string `xorm:"NOT NULL VARCHAR(64) UNIQUE(pull_commit_user)"` // Which commit was the head commit for the review?
|
|
UpdatedFiles map[string]int `xorm:"NOT NULL TEXT JSON"` // Stores for each of the changed files of a PR whether they have been viewed, changed since last viewed, or not viewed
|
|
UpdatedUnix timeutil.TimeStamp `xorm:"updated"` // Is an accurate indicator of the order of commits as we do not expect it to be possible to make reviews on previous commits
|
|
}
|
|
|
|
type PackageProperty struct {
|
|
ID int64 `xorm:"pk autoincr"`
|
|
RefType int `xorm:"INDEX NOT NULL"`
|
|
RefID int64 `xorm:"INDEX NOT NULL"`
|
|
Name string `xorm:"INDEX NOT NULL"`
|
|
Value string `xorm:"TEXT NOT NULL"`
|
|
}
|
|
|
|
type Notice struct {
|
|
ID int64 `xorm:"pk autoincr"`
|
|
Type int
|
|
Description string `xorm:"TEXT"`
|
|
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
|
}
|
|
|
|
// Prepare and load the testing database
|
|
x, deferrable := migrationtest.PrepareTestEnv(t, 0, new(ReviewState), new(PackageProperty), new(Notice))
|
|
defer deferrable()
|
|
|
|
require.NoError(t, UseLongTextInSomeColumnsAndFixBugs(x))
|
|
|
|
tables := migrationtest.LoadTableSchemasMap(t, x)
|
|
table := tables["review_state"]
|
|
column := table.GetColumn("updated_files")
|
|
assert.Equal(t, "LONGTEXT", column.SQLType.Name)
|
|
|
|
table = tables["package_property"]
|
|
column = table.GetColumn("value")
|
|
assert.Equal(t, "LONGTEXT", column.SQLType.Name)
|
|
|
|
table = tables["notice"]
|
|
column = table.GetColumn("description")
|
|
assert.Equal(t, "LONGTEXT", column.SQLType.Name)
|
|
}
|