Files
jiang13-bbs/backend/model/board_seed_test.go

43 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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("默认板块「综合讨论」被复活")
}
}