106 lines
2.3 KiB
Go
106 lines
2.3 KiB
Go
package xiaohongshu
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/xpzouying/xiaohongshu-mcp/browser"
|
|
)
|
|
|
|
func TestSearch(t *testing.T) {
|
|
|
|
t.Skip("SKIP: 测试发布")
|
|
|
|
b := browser.NewBrowser(false)
|
|
defer b.Close()
|
|
|
|
page := b.NewPage()
|
|
defer func() {
|
|
_ = page.Close()
|
|
}()
|
|
|
|
action := NewSearchAction(page)
|
|
|
|
feeds, err := action.Search(context.Background(), "Kimi")
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, feeds, "feeds should not be empty")
|
|
|
|
fmt.Printf("成功获取到 %d 个 Feed\n", len(feeds))
|
|
|
|
for _, feed := range feeds {
|
|
fmt.Printf("Feed ID: %s\n", feed.ID)
|
|
fmt.Printf("Feed Title: %s\n", feed.NoteCard.DisplayTitle)
|
|
}
|
|
}
|
|
|
|
func TestSearchWithFilters(t *testing.T) {
|
|
|
|
//t.Skip("SKIP: 测试筛选功能")
|
|
|
|
b := browser.NewBrowser(false)
|
|
defer b.Close()
|
|
|
|
page := b.NewPage()
|
|
defer func() {
|
|
_ = page.Close()
|
|
}()
|
|
|
|
action := NewSearchAction(page)
|
|
|
|
// 使用新的 FilterOption 结构
|
|
filter := FilterOption{
|
|
NoteType: "图文",
|
|
PublishTime: "一天内",
|
|
}
|
|
|
|
feeds, err := action.Search(context.Background(), "dn432", filter)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, feeds, "feeds should not be empty")
|
|
|
|
fmt.Printf("成功获取到 %d 个筛选后的 Feed\n", len(feeds))
|
|
|
|
for _, feed := range feeds {
|
|
fmt.Printf("Feed ID: %s\n", feed.ID)
|
|
fmt.Printf("Feed Title: %s\n", feed.NoteCard.DisplayTitle)
|
|
}
|
|
}
|
|
|
|
func TestFilterValidation(t *testing.T) {
|
|
// 测试有效的筛选选项转换
|
|
validFilter := FilterOption{
|
|
NoteType: "图文",
|
|
PublishTime: "一天内",
|
|
}
|
|
internalFilters, err := convertToInternalFilters(validFilter)
|
|
require.NoError(t, err)
|
|
require.Len(t, internalFilters, 2)
|
|
|
|
// 验证转换后的内部筛选选项
|
|
for _, filter := range internalFilters {
|
|
err := validateInternalFilterOption(filter)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
// 测试无效的筛选值
|
|
invalidFilter := FilterOption{
|
|
NoteType: "不存在的类型",
|
|
}
|
|
_, err = convertToInternalFilters(invalidFilter)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), "未找到文本")
|
|
|
|
// 测试所有有效的筛选选项
|
|
allFilters := FilterOption{
|
|
SortBy: "最新",
|
|
NoteType: "视频",
|
|
PublishTime: "一周内",
|
|
SearchScope: "已关注",
|
|
Location: "同城",
|
|
}
|
|
internalFilters, err = convertToInternalFilters(allFilters)
|
|
require.NoError(t, err)
|
|
require.Len(t, internalFilters, 5)
|
|
}
|