Files
ttstd-infinite-canvas/backend/internal/assets/references_test.go

39 lines
1.6 KiB
Go

package assets
import "testing"
func TestCollectDocumentResourceReferencesIncludesNestedVideoPreview(t *testing.T) {
raw := `{"nodes":[{"id":"node-video","metadata":{"videoPreview":{"storageKey":"resource:poster-1","source":{"id":"nested-not-node","url":"/api/resources/poster-2/file"}}}}]}`
refs, err := CollectDocumentResourceReferences(raw)
if err != nil {
t.Fatal(err)
}
got := map[string]DocumentResourceReference{}
for _, ref := range refs {
got[ref.ResourceID] = ref
}
if ref := got["poster-1"]; ref.Path != "nodes[node-video].metadata.videoPreview.storageKey" || ref.NodeID != "node-video" || ref.ReferenceType != "storageKey" {
t.Fatalf("nested storageKey reference = %#v", ref)
}
if ref := got["poster-2"]; ref.Path != "nodes[node-video].metadata.videoPreview.source.url" || ref.NodeID != "node-video" {
t.Fatalf("nested URL reference = %#v", ref)
}
}
func TestCollectDocumentResourceReferencesUsesExplicitFieldsOnly(t *testing.T) {
raw := `{"nodes":[{"id":"node-1","metadata":{"label":"resource:not-a-reference","videoPreview":{"resourceId":"poster-3"}}}],"log":"/api/resources/log-1/file"}`
refs, err := CollectDocumentResourceReferences(raw)
if err != nil {
t.Fatal(err)
}
if len(refs) != 1 || refs[0].ResourceID != "poster-3" || refs[0].NodeID != "node-1" || refs[0].ReferenceType != "resourceId" {
t.Fatalf("references = %#v", refs)
}
}
func TestCollectDocumentResourceReferencesReportsInvalidJSON(t *testing.T) {
if _, err := CollectDocumentResourceReferences(`{"nodes":`); err == nil {
t.Fatal("expected malformed document to be rejected")
}
}