77 lines
2.4 KiB
Go
77 lines
2.4 KiB
Go
package live
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
bizlive "kra/internal/biz/live"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type catalogTestProvider struct{ db *gorm.DB }
|
|
|
|
func (p catalogTestProvider) DB() *gorm.DB { return p.db }
|
|
|
|
func openCatalogTestDB(t *testing.T) *gorm.DB {
|
|
t.Helper()
|
|
db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = db.AutoMigrate(&categoryPO{}, &roomPO{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = db.Exec(`CREATE TABLE sys_users (
|
|
id integer primary key,
|
|
username text,
|
|
nick_name text,
|
|
header_img text,
|
|
deleted_at datetime
|
|
)`).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return db
|
|
}
|
|
|
|
func TestCatalogRepoScansCategoryAndRoomFields(t *testing.T) {
|
|
db := openCatalogTestDB(t)
|
|
if err := db.Exec(`INSERT INTO sys_users(id, username, nick_name, header_img) VALUES (2, 'anchor', 'Anchor', 'avatar.png')`).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
category := categoryPO{Name: "Games", Icon: "game.png", Sort: 1, Enabled: true}
|
|
if err := db.Create(&category).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
room := roomPO{Name: "Test Room", CategoryID: category.ID, CoverURL: "cover.png", Intro: "intro", Sort: 2, AnchorUserID: 2, Enabled: true}
|
|
if err := db.Create(&room).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
repo := NewCatalogRepo(catalogTestProvider{db: db})
|
|
categories, total, err := repo.ListCategories(context.Background(), bizlive.CategoryFilter{}, bizlive.ListOptions{Limit: 10})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if total != 1 || len(categories) != 1 || categories[0].ID != category.ID || categories[0].Name != category.Name || !categories[0].Enabled || categories[0].RoomCount != 1 {
|
|
t.Fatalf("category scan result total=%d categories=%+v", total, categories)
|
|
}
|
|
|
|
rooms, total, err := repo.ListRooms(context.Background(), bizlive.RoomFilter{}, bizlive.ListOptions{Limit: 10})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if total != 1 || len(rooms) != 1 || rooms[0].ID != room.ID || rooms[0].Name != room.Name || rooms[0].CategoryName != category.Name || rooms[0].AnchorName != "Anchor" || !rooms[0].Enabled {
|
|
t.Fatalf("room list scan result total=%d rooms=%+v", total, rooms)
|
|
}
|
|
|
|
got, err := repo.GetRoom(context.Background(), room.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got.ID != room.ID || got.Name != room.Name || got.AnchorUserID != 2 || got.AnchorAvatar != "avatar.png" || !got.Enabled {
|
|
t.Fatalf("room get scan result=%+v", got)
|
|
}
|
|
}
|