2026-04-29 12:43:05 +08:00

38 lines
1.3 KiB
Go

package activity_test
import (
"context"
"testing"
"hyapp/pkg/xerr"
activitydomain "hyapp/services/activity-service/internal/domain/activity"
activityservice "hyapp/services/activity-service/internal/service/activity"
"hyapp/services/activity-service/internal/testutil/mysqltest"
)
// TestGetActivityStatusUsesRepository 验证活动状态读取不依赖 gRPC transport。
func TestGetActivityStatusUsesRepository(t *testing.T) {
repository := mysqltest.NewRepository(t)
repository.PutActivity(activitydomain.Activity{ActivityID: "lucky-gift", Status: activitydomain.StatusActive})
svc := activityservice.New(activityservice.Config{NodeID: "activity-a"}, repository)
activity, err := svc.GetActivityStatus(context.Background(), "lucky-gift")
if err != nil {
t.Fatalf("GetActivityStatus failed: %v", err)
}
if activity.Status != activitydomain.StatusActive {
t.Fatalf("unexpected activity: %+v", activity)
}
}
// TestGetActivityStatusValidatesID 锁定空 activity_id 的错误 reason。
func TestGetActivityStatusValidatesID(t *testing.T) {
svc := activityservice.New(activityservice.Config{NodeID: "activity-a"}, nil)
_, err := svc.GetActivityStatus(context.Background(), "")
if !xerr.IsCode(err, xerr.InvalidArgument) {
t.Fatalf("expected INVALID_ARGUMENT, got %v", err)
}
}