Files
qqbot/internal/notifier/notifier_fill_target_test.go
2026-03-17 23:21:27 +08:00

65 lines
1.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package notifier
import (
"context"
"path/filepath"
"strings"
"testing"
"time"
"github.com/sky22333/qqbot/config"
"github.com/sky22333/qqbot/internal/targets"
"github.com/sky22333/qqbot/message"
)
func TestEnqueueFillTargetFromLatestByType(t *testing.T) {
cfg := config.Default()
cfg.Dispatch.Workers = 0
cfg.Targets.FilePath = filepath.Join(t.TempDir(), "targets.json")
store, err := targets.NewStore(cfg.Targets.FilePath, cfg.Targets.MaxRecords, 10*time.Millisecond)
if err != nil {
t.Fatalf("创建目标存储失败: %v", err)
}
defer store.Close()
if err := store.Upsert(message.TargetC2C, "user-001", "m1", "hello"); err != nil {
t.Fatalf("写入目标失败: %v", err)
}
n, err := New(cfg, nil)
if err != nil {
t.Fatalf("创建 notifier 失败: %v", err)
}
defer n.Close()
n.SetTargetStore(store)
_, err = n.Enqueue(context.Background(), message.PushRequest{
TargetType: message.TargetC2C,
Content: "通知",
})
if err != nil {
t.Fatalf("应自动补全 target_id但返回错误: %v", err)
}
}
func TestEnqueueWithoutStoreReturnsTargetIDError(t *testing.T) {
cfg := config.Default()
cfg.Dispatch.Workers = 0
n, err := New(cfg, nil)
if err != nil {
t.Fatalf("创建 notifier 失败: %v", err)
}
defer n.Close()
_, err = n.Enqueue(context.Background(), message.PushRequest{
TargetType: message.TargetC2C,
Content: "通知",
})
if err == nil {
t.Fatalf("预期返回 target_id 不能为空")
}
if !strings.Contains(err.Error(), "target_id 不能为空") {
t.Fatalf("错误信息不符合预期: %v", err)
}
}