chore: refresh gramsrv public release

This commit is contained in:
A 2026-06-30 14:37:43 +08:00
parent 75cebe8dbf
commit 70b6820474
1274 changed files with 378751 additions and 59919 deletions

View file

@ -0,0 +1,51 @@
package domain
import (
"reflect"
"testing"
)
func TestClassifyMediaCategories(t *testing.T) {
doc := func(attrs ...DocumentAttribute) *MessageMedia {
return &MessageMedia{Kind: MessageMediaKindDocument, Document: &Document{Attributes: attrs}}
}
urlEnt := []MessageEntity{{Type: MessageEntityURL}}
textURLEnt := []MessageEntity{{Type: MessageEntityTextURL}}
emailEnt := []MessageEntity{{Type: MessageEntityEmail}}
cases := []struct {
name string
media *MessageMedia
entities []MessageEntity
want []MediaCategory
}{
{"nil media no entities", nil, nil, []MediaCategory{}},
{"photo", &MessageMedia{Kind: MessageMediaKindPhoto, Photo: &Photo{}}, nil, []MediaCategory{MediaCategoryPhoto}},
{"poll", &MessageMedia{Kind: MessageMediaKindPoll}, nil, []MediaCategory{MediaCategoryPoll}},
{"video", doc(DocumentAttribute{Kind: DocAttrVideo}), nil, []MediaCategory{MediaCategoryVideo}},
{"round video note", doc(DocumentAttribute{Kind: DocAttrVideo, RoundMessage: true}), nil, []MediaCategory{MediaCategoryRoundVideo}},
{"gif animation", doc(DocumentAttribute{Kind: DocAttrAnimated}), nil, []MediaCategory{MediaCategoryGif}},
{"music", doc(DocumentAttribute{Kind: DocAttrAudio}), nil, []MediaCategory{MediaCategoryMusic}},
{"voice", doc(DocumentAttribute{Kind: DocAttrAudio, Voice: true}), nil, []MediaCategory{MediaCategoryVoice}},
{"generic file", doc(DocumentAttribute{Kind: DocAttrFilename, FileName: "x.pdf"}), nil, []MediaCategory{MediaCategoryFile}},
{"sticker excluded", doc(DocumentAttribute{Kind: DocAttrSticker}), nil, []MediaCategory{}},
{"animated sticker excluded", doc(DocumentAttribute{Kind: DocAttrSticker}, DocumentAttribute{Kind: DocAttrAnimated}), nil, []MediaCategory{}},
{"photo with url", &MessageMedia{Kind: MessageMediaKindPhoto, Photo: &Photo{}}, urlEnt, []MediaCategory{MediaCategoryPhoto, MediaCategoryURL}},
{"text-only url", nil, urlEnt, []MediaCategory{MediaCategoryURL}},
{"text-only text_url", nil, textURLEnt, []MediaCategory{MediaCategoryURL}},
{"text-only email", nil, emailEnt, []MediaCategory{MediaCategoryURL}},
{"webpage media", &MessageMedia{Kind: MessageMediaKindWebPage, WebPage: &MessageWebPage{State: MessageWebPageStateDone, ID: 1, URL: "https://example.test"}}, nil, []MediaCategory{MediaCategoryURL}},
{"webpage media with url entity deduped", &MessageMedia{Kind: MessageMediaKindWebPage, WebPage: &MessageWebPage{State: MessageWebPageStateDone, ID: 1, URL: "https://example.test"}}, urlEnt, []MediaCategory{MediaCategoryURL}},
{"file with link", doc(DocumentAttribute{Kind: DocAttrFilename}), urlEnt, []MediaCategory{MediaCategoryFile, MediaCategoryURL}},
{"geo not indexed", &MessageMedia{Kind: MessageMediaKindGeo}, nil, []MediaCategory{}},
{"contact not indexed", &MessageMedia{Kind: MessageMediaKindContact}, nil, []MediaCategory{}},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
got := ClassifyMediaCategories(tc.media, tc.entities)
if !reflect.DeepEqual(got, tc.want) {
t.Fatalf("ClassifyMediaCategories = %v, want %v", got, tc.want)
}
})
}
}