fix: 默认板块仅在空库播种,改名后重启不再复活
This commit is contained in:
42
backend/model/board_seed_test.go
Normal file
42
backend/model/board_seed_test.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// 默认板块只在空库播种:站长改名/删除板块后重启不得复活默认板块(0.2.1 事故回归)
|
||||
func TestSeedDefaultBoardsOnlyWhenEmpty(t *testing.T) {
|
||||
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
||||
if err != nil {
|
||||
t.Fatalf("open sqlite: %v", err)
|
||||
}
|
||||
if err := db.AutoMigrate(&Board{}); err != nil {
|
||||
t.Fatalf("migrate: %v", err)
|
||||
}
|
||||
|
||||
// 空库首启:播种 4 个默认板块
|
||||
seedDefaultBoards(db)
|
||||
var n int64
|
||||
db.Model(&Board{}).Count(&n)
|
||||
if n != 4 {
|
||||
t.Fatalf("空库应播种 4 个默认板块,实际 %d", n)
|
||||
}
|
||||
|
||||
// 站长改名后重启:不再复活默认板块
|
||||
if err := db.Model(&Board{}).Where("name = ?", "综合讨论").Update("name", "新综合").Error; err != nil {
|
||||
t.Fatalf("rename: %v", err)
|
||||
}
|
||||
seedDefaultBoards(db)
|
||||
db.Model(&Board{}).Count(&n)
|
||||
if n != 4 {
|
||||
t.Fatalf("改名后重启不应重复播种,实际 %d 个板块", n)
|
||||
}
|
||||
var revived int64
|
||||
db.Model(&Board{}).Where("name = ?", "综合讨论").Count(&revived)
|
||||
if revived != 0 {
|
||||
t.Fatal("默认板块「综合讨论」被复活")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user