Files
epic-go/internal/logic/cron/third_party_sync_test.go
hxt 9293db3809 ci(drone): 添加 Go 模块和构建缓存
- 在 restore cache 和 rebuild cache 步骤中添加了 go-mod-cache 和 go
2025-07-10 21:16:25 +08:00

148 lines
4.5 KiB
Go

package cron
import (
"context"
"fmt"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/genv"
"os"
"testing"
)
func TestMain(m *testing.M) {
// 必须在任何import和g.Cfg()调用前设置环境变量
genv.Set("GF_GCFG_FILE", "../../../../manifest/config/config.yaml")
ctx := gctx.New()
_ = g.Cfg().MustGet(ctx, "server.address")
fmt.Println(g.Cfg().Get(ctx, "redis.default.address"))
code := m.Run()
os.Exit(code)
}
type mockSync struct {
fetchHeroDataErr error
fetchArtifactDataErr error
processHeroDataErr error
processArtifactErr error
}
func (m *mockSync) fetchHeroDataFromAPI(ctx context.Context) ([]byte, error) {
if m.fetchHeroDataErr != nil {
return nil, m.fetchHeroDataErr
}
return []byte(`[{"code":"hero1"},{"code":"hero2"}]`), nil
}
func (m *mockSync) fetchArtifactDataFromAPI(ctx context.Context) ([]byte, error) {
if m.fetchArtifactDataErr != nil {
return nil, m.fetchArtifactDataErr
}
return []byte(`[{"code":"artifact1"}]`), nil
}
func (m *mockSync) processAndSaveHeroData(ctx context.Context, data []byte) error {
return m.processHeroDataErr
}
func (m *mockSync) processAndSaveArtifactData(ctx context.Context, data []byte) error {
return m.processArtifactErr
}
/**
* 测试同步英雄数据
*/
func TestSyncHeroData(t *testing.T) {
thirdPartyDataSync := NewThirdPartyDataSync()
err := thirdPartyDataSync.SyncHeroData(context.Background())
if err != nil {
t.Errorf("expected success, got error: %v", err)
}
}
//
//func TestSyncHeroData_FetchError(t *testing.T) {
// sync := &ThirdPartyDataSync{}
// sync.fetchHeroDataFromAPI = (&mockSync{fetchHeroDataErr: errors.New("fetch error")}).fetchHeroDataFromAPI
// sync.processAndSaveHeroData = (&mockSync{}).processAndSaveHeroData
//
// err := sync.SyncHeroData(context.Background())
// if err == nil || err.Error() != "fetch error" {
// t.Errorf("expected fetch error, got: %v", err)
// }
//}
//
//func TestSyncHeroData_ProcessError(t *testing.T) {
// sync := &ThirdPartyDataSync{}
// sync.fetchHeroDataFromAPI = (&mockSync{}).fetchHeroDataFromAPI
// sync.processAndSaveHeroData = (&mockSync{processHeroDataErr: errors.New("process error")}).processAndSaveHeroData
//
// err := sync.SyncHeroData(context.Background())
// if err == nil || err.Error() != "process error" {
// t.Errorf("expected process error, got: %v", err)
// }
//}
//
//func TestSyncArtifactData_Success(t *testing.T) {
// sync := &ThirdPartyDataSync{}
// sync.fetchArtifactDataFromAPI = (&mockSync{}).fetchArtifactDataFromAPI
// sync.processAndSaveArtifactData = (&mockSync{}).processAndSaveArtifactData
//
// err := sync.SyncArtifactData(context.Background())
// if err != nil {
// t.Errorf("expected success, got error: %v", err)
// }
//}
//
//func TestSyncArtifactData_FetchError(t *testing.T) {
// sync := &ThirdPartyDataSync{}
// sync.fetchArtifactDataFromAPI = (&mockSync{fetchArtifactDataErr: errors.New("fetch error")}).fetchArtifactDataFromAPI
// sync.processAndSaveArtifactData = (&mockSync{}).processAndSaveArtifactData
//
// err := sync.SyncArtifactData(context.Background())
// if err == nil || err.Error() != "fetch error" {
// t.Errorf("expected fetch error, got: %v", err)
// }
//}
//
//func TestSyncArtifactData_ProcessError(t *testing.T) {
// sync := &ThirdPartyDataSync{}
// sync.fetchArtifactDataFromAPI = (&mockSync{}).fetchArtifactDataFromAPI
// sync.processAndSaveArtifactData = (&mockSync{processArtifactErr: errors.New("process error")}).processAndSaveArtifactData
//
// err := sync.SyncArtifactData(context.Background())
// if err == nil || err.Error() != "process error" {
// t.Errorf("expected process error, got: %v", err)
// }
//}
func TestProcessAndSaveArtifactData(t *testing.T) {
sync := &ThirdPartyDataSync{}
// 构造一个合法的 JSON 数据
data := "[{\"code\":\"artifact1\"},{\"code\":\"artifact2\"}]"
if err := sync.processAndSaveArtifactData(context.Background(), data); err != nil {
t.Errorf("expected no error, got: %v", err)
}
}
func TestProcessAndSaveHeroData(t *testing.T) {
sync := &ThirdPartyDataSync{}
// 构造一个合法的 JSON 数据
data := []byte(`[{"code":"hero1"},{"code":"hero2"}]`)
if err := sync.processAndSaveHeroData(context.Background(), data); err != nil {
t.Errorf("expected no error, got: %v", err)
}
}
func TestSyncArtifactData_Success(t *testing.T) {
sync := NewThirdPartyDataSync()
err := sync.SyncArtifactData(context.Background())
if err != nil {
t.Errorf("expected success, but got error: %v", err)
}
}