Files
kra-new/internal/data/live/catalog_test.go
T

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)
}
}