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