初始化仓库
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
package fake
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/chenhg5/cc-connect/core"
|
||||
)
|
||||
|
||||
// TestUsageReport creates a test usage report.
|
||||
func TestUsageReport(provider, accountID, email string) *core.UsageReport {
|
||||
return &core.UsageReport{
|
||||
Provider: provider,
|
||||
AccountID: accountID,
|
||||
UserID: "test-user",
|
||||
Email: email,
|
||||
Plan: "pro",
|
||||
Buckets: []core.UsageBucket{
|
||||
{
|
||||
Name: "Standard Requests",
|
||||
Allowed: true,
|
||||
LimitReached: false,
|
||||
Windows: []core.UsageWindow{
|
||||
{UsedPercent: 45, WindowSeconds: 3600},
|
||||
},
|
||||
},
|
||||
},
|
||||
Credits: &core.UsageCredits{
|
||||
HasCredits: true,
|
||||
Unlimited: false,
|
||||
Balance: "$12.50",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// TestPermissionModeInfo creates a test permission mode info.
|
||||
func TestPermissionModeInfo(key, name, nameZh, desc, descZh string) core.PermissionModeInfo {
|
||||
return core.PermissionModeInfo{
|
||||
Key: key,
|
||||
Name: name,
|
||||
NameZh: nameZh,
|
||||
Desc: desc,
|
||||
DescZh: descZh,
|
||||
}
|
||||
}
|
||||
|
||||
// TestCard creates a test card using the CardBuilder.
|
||||
func TestCard() *core.Card {
|
||||
return core.NewCard().
|
||||
Title("Test Card", "blue").
|
||||
Markdown("**Test content**").
|
||||
Build()
|
||||
}
|
||||
|
||||
// TestCardWithTitle creates a card with a specific title.
|
||||
func TestCardWithTitle(title string) *core.Card {
|
||||
return core.NewCard().
|
||||
Title(title, "blue").
|
||||
Markdown("**Content**").
|
||||
Build()
|
||||
}
|
||||
|
||||
// TestCardWithButtons creates a card with buttons.
|
||||
func TestCardWithButtons(buttons ...core.CardButton) *core.Card {
|
||||
return core.NewCard().
|
||||
Title("Test Card", "blue").
|
||||
Markdown("Select an option:").
|
||||
Buttons(buttons...).
|
||||
Build()
|
||||
}
|
||||
|
||||
// TestMessageHandler is a simple message handler for testing.
|
||||
type TestMessageHandler struct {
|
||||
mu sync.Mutex
|
||||
Messages []*core.Message
|
||||
}
|
||||
|
||||
func NewTestMessageHandler() *TestMessageHandler {
|
||||
return &TestMessageHandler{
|
||||
Messages: make([]*core.Message, 0),
|
||||
}
|
||||
}
|
||||
|
||||
func (h *TestMessageHandler) Handle(p core.Platform, msg *core.Message) {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
h.Messages = append(h.Messages, msg)
|
||||
}
|
||||
|
||||
func (h *TestMessageHandler) GetMessages() []*core.Message {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
cp := make([]*core.Message, len(h.Messages))
|
||||
copy(cp, h.Messages)
|
||||
return cp
|
||||
}
|
||||
|
||||
func (h *TestMessageHandler) Clear() {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
h.Messages = h.Messages[:0]
|
||||
}
|
||||
|
||||
// TestDedupeItem creates a test deduplication item.
|
||||
type TestDedupeItem struct {
|
||||
key string
|
||||
expiration time.Time
|
||||
}
|
||||
|
||||
func NewTestDedupeItem(key string, ttl time.Duration) *TestDedupeItem {
|
||||
return &TestDedupeItem{
|
||||
key: key,
|
||||
expiration: time.Now().Add(ttl),
|
||||
}
|
||||
}
|
||||
|
||||
// TestRateLimiterToken creates a test rate limiter token bucket state.
|
||||
type TestRateLimiterToken struct{}
|
||||
|
||||
// TestCronJob creates a test cron job.
|
||||
func TestCronJob(id, desc, prompt string, cronExpr string) *core.CronJob {
|
||||
enabled := true
|
||||
return &core.CronJob{
|
||||
ID: id,
|
||||
Description: desc,
|
||||
Prompt: prompt,
|
||||
CronExpr: cronExpr,
|
||||
Enabled: enabled,
|
||||
}
|
||||
}
|
||||
|
||||
// TestAgentSessionInfoList creates a list of test agent session info.
|
||||
func TestAgentSessionInfoList(count int) []core.AgentSessionInfo {
|
||||
sessions := make([]core.AgentSessionInfo, count)
|
||||
for i := 0; i < count; i++ {
|
||||
sessions[i] = core.AgentSessionInfo{
|
||||
ID: fmt.Sprintf("session-%d", i),
|
||||
Summary: fmt.Sprintf("Test session %d", i),
|
||||
MessageCount: (i + 1) * 10,
|
||||
ModifiedAt: time.Now().Add(-time.Duration(i) * time.Hour),
|
||||
}
|
||||
}
|
||||
return sessions
|
||||
}
|
||||
|
||||
// TestContext returns a context with timeout for testing.
|
||||
func TestContext(timeout time.Duration) (context.Context, context.CancelFunc) {
|
||||
return context.WithTimeout(context.Background(), timeout)
|
||||
}
|
||||
Reference in New Issue
Block a user