37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package usecase
|
||
|
||
import (
|
||
"strings"
|
||
"testing"
|
||
|
||
"apps/backend/internal/module/search"
|
||
|
||
"github.com/stretchr/testify/require"
|
||
)
|
||
|
||
func TestExtractTopicLabels_FromGQStyleTitle(t *testing.T) {
|
||
// 報導標題 → 應抽出「二砂糖」「炎上展」這類短話題,而不是整段新聞標題
|
||
h := search.Hit{
|
||
Title: "【一週脆報】本週 Threads 紅什麼:為什麼颱風來襲「二砂糖」比泡麵先被掃空?日本超夯「炎上展」登台",
|
||
Snippet: "本週 Threads 完全成了大型苦中作樂現場",
|
||
}
|
||
labels := extractTopicLabels(h)
|
||
require.NotEmpty(t, labels)
|
||
joined := strings.Join(labels, " ")
|
||
require.Contains(t, joined, "二砂糖")
|
||
require.Contains(t, joined, "炎上展")
|
||
for _, l := range labels {
|
||
require.LessOrEqual(t, len([]rune(l)), 18)
|
||
require.NotContains(t, l, "Threads新功能")
|
||
}
|
||
}
|
||
|
||
func TestIsMetaThreadsArticle(t *testing.T) {
|
||
require.True(t, isMetaThreadsArticle(search.Hit{
|
||
Title: "Threads新功能上線!AI整理全台「趨勢話題」",
|
||
}))
|
||
require.False(t, isMetaThreadsArticle(search.Hit{
|
||
Title: "本週 Threads 紅什麼:二砂糖與颱風備貨",
|
||
}))
|
||
}
|