hy001 c4f75b4846 z
增加邀请活动
2026-04-24 17:11:13 +08:00

72 lines
2.2 KiB
Go

package lingxian
import (
"chatapp3-golang/internal/config"
"chatapp3-golang/internal/model"
"context"
"net/http"
"net/http/httptest"
"testing"
"time"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestSyncAdminGamesFetchesCatalogAndImportsUnifiedList(t *testing.T) {
ctx := context.Background()
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
if err != nil {
t.Fatalf("open sqlite: %v", err)
}
if err := db.AutoMigrate(
&model.LingxianProviderConfig{},
&model.LingxianGameCatalog{},
&model.SysGameListConfig{},
&model.SysGameListVendorExt{},
); err != nil {
t.Fatalf("migrate: %v", err)
}
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
_, _ = w.Write([]byte(`[{"gameId":"1","name":"Fruit Party","title":"水果奇缘","ver":11,"full_url":"https://example.test/full.html","half_url":"https://example.test/half.html"}]`))
}))
defer server.Close()
now := time.Now()
if err := db.Create(&model.LingxianProviderConfig{
ID: 1,
SysOrigin: "LIKEI",
Profile: profileProd,
Active: true,
GameListURL: server.URL,
AppKey: "test-key",
CreateTime: now,
UpdateTime: now,
}).Error; err != nil {
t.Fatalf("seed provider: %v", err)
}
service := NewService(config.Config{HTTP: config.HTTPConfig{Timeout: time.Second}}, db, nil)
resp, err := service.SyncAdminGames(ctx, SyncCatalogRequest{SysOrigin: "LIKEI", Profile: profileProd})
if err != nil {
t.Fatalf("SyncAdminGames: %v", err)
}
if resp.Imported != 1 {
t.Fatalf("imported = %d, want 1", resp.Imported)
}
var cfg model.SysGameListConfig
if err := db.Where("sys_origin = ? AND game_origin = ? AND game_id = ?", "LIKEI", vendorType, "1").First(&cfg).Error; err != nil {
t.Fatalf("unified config missing: %v", err)
}
var ext model.SysGameListVendorExt
if err := db.Where("game_list_config_id = ? AND vendor_type = ? AND profile = ?", cfg.ID, vendorType, profileProd).First(&ext).Error; err != nil {
t.Fatalf("vendor ext missing: %v", err)
}
if ext.VendorGameID != "1" || ext.PackageURL != "https://example.test/full.html" {
t.Fatalf("vendor ext = %#v", ext)
}
}