Files
creator-hub/internal/platform/xiaohongshu/detail_test.go
T

34 lines
1.5 KiB
Go

package xiaohongshu
import (
"context"
"errors"
"testing"
"git.ipao.vip/rogee/creator-hub/internal/creator"
)
func TestGetNoteDetailPreservesShareContext(t *testing.T) {
browser := &fakeBrowser{postResp: Response{Status: 200, Body: []byte(`{"success":true,"data":{"items":[{"note_id":"n-1","title":"详情","desc":"正文","time":1710000000,"user":{"user_id":"u-1","nickname":"作者"},"interact_info":{"liked_count":1,"comment_count":2,"shared_count":3}}]}}`)}}
collector := &Collector{Browser: browser, SourceType: creator.SourceCompetitor, SourceID: "source-1"}
item, err := collector.GetNoteDetail(context.Background(), "https://www.xiaohongshu.com/explore/n-1?xsec_token=tok-1&xsec_source=pc_search")
if err != nil || item.WorkKey != "n-1" || item.AuthorKey != "u-1" || item.OriginalURL == "" {
t.Fatalf("item = %#v, err = %v", item, err)
}
if err := collector.SetWorkContext("n-1", item.OriginalURL); err != nil {
t.Fatalf("set work context: %v", err)
}
if browser.postURL != APIOrigin+FeedPath {
t.Fatalf("post URL = %s", browser.postURL)
}
}
func TestGetNoteDetailRejectsWrongResponseID(t *testing.T) {
browser := &fakeBrowser{postResp: Response{Status: 200, Body: []byte(`{"success":true,"data":{"items":[{"note_id":"n-2","title":"详情","time":1710000000,"interact_info":{}}]}}`)}}
collector := &Collector{Browser: browser}
_, err := collector.GetNoteDetail(context.Background(), "https://www.xiaohongshu.com/explore/n-1")
if !errors.Is(err, creator.ErrConflict) {
t.Fatalf("expected conflict, got %v", err)
}
}