70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
appbsky "github.com/bluesky-social/indigo/api/bsky"
|
|
)
|
|
|
|
func TestExtractVideoMeta(t *testing.T) {
|
|
// Plain post — no video.
|
|
pv := makePostView("alice.bsky.social", "did:plc:alice", "abc", "hi")
|
|
if vm := extractVideoMeta(pv, false); vm.URL != "" {
|
|
t.Errorf("non-video post produced video meta: %+v", vm)
|
|
}
|
|
|
|
// Video embed with playlist + aspect ratio.
|
|
playlist := "https://video.bsky.app/playlist.m3u8"
|
|
pv = makePostView("alice.bsky.social", "did:plc:alice", "abc", "watch")
|
|
pv.Embed = &appbsky.FeedDefs_PostView_Embed{
|
|
EmbedVideo_View: &appbsky.EmbedVideo_View{
|
|
Thumbnail: strPtr("https://cdn.bsky.app/thumb@jpg"),
|
|
Playlist: playlist,
|
|
AspectRatio: &appbsky.EmbedDefs_AspectRatio{Width: 16, Height: 9},
|
|
},
|
|
}
|
|
vm := extractVideoMeta(pv, false)
|
|
if vm.URL != playlist {
|
|
t.Errorf("URL wrong: %v", vm.URL)
|
|
}
|
|
if vm.Type != "application/vnd.apple.mpegurl" {
|
|
t.Errorf("Type wrong: %v", vm.Type)
|
|
}
|
|
if !vm.HasSize || vm.Width != 16 || vm.Height != 9 {
|
|
t.Errorf("aspect ratio not propagated: %+v", vm)
|
|
}
|
|
|
|
// Hidden embed gate suppresses video too.
|
|
if vm := extractVideoMeta(pv, true); vm.URL != "" {
|
|
t.Errorf("hidden embed should suppress video meta")
|
|
}
|
|
|
|
// Video inside record-with-media.
|
|
pv2 := makePostView("alice.bsky.social", "did:plc:alice", "abc", "quote w/ video")
|
|
pv2.Embed = &appbsky.FeedDefs_PostView_Embed{
|
|
EmbedRecordWithMedia_View: &appbsky.EmbedRecordWithMedia_View{
|
|
Media: &appbsky.EmbedRecordWithMedia_View_Media{
|
|
EmbedVideo_View: &appbsky.EmbedVideo_View{Playlist: playlist},
|
|
},
|
|
},
|
|
}
|
|
vm2 := extractVideoMeta(pv2, false)
|
|
if vm2.URL != playlist {
|
|
t.Errorf("record-with-media video URL not extracted: %+v", vm2)
|
|
}
|
|
if vm2.HasSize {
|
|
t.Errorf("expected HasSize=false when no aspect ratio")
|
|
}
|
|
|
|
// Video without playlist — skip entirely.
|
|
pv3 := makePostView("alice.bsky.social", "did:plc:alice", "abc", "no playlist")
|
|
pv3.Embed = &appbsky.FeedDefs_PostView_Embed{
|
|
EmbedVideo_View: &appbsky.EmbedVideo_View{
|
|
Thumbnail: strPtr("https://cdn.bsky.app/thumb@jpg"),
|
|
},
|
|
}
|
|
if vm := extractVideoMeta(pv3, false); vm.URL != "" {
|
|
t.Errorf("video without playlist should produce empty meta, got %+v", vm)
|
|
}
|
|
}
|