package app
import (
"strings"
"testing"
)
func TestExtractReferencedImageAssetIDsFromMarkdown_DeduplicatesInOrder(t *testing.T) {
t.Parallel()
markdown := strings.Join([]string{
`before`,
`

`,
`
`,
`
`,
}, "\n")
got := extractReferencedImageAssetIDsFromMarkdown(markdown)
want := []int64{42, 7}
if len(got) != len(want) {
t.Fatalf("expected %d ids, got %d (%v)", len(want), len(got), got)
}
for idx := range want {
if got[idx] != want[idx] {
t.Fatalf("expected ids %v, got %v", want, got)
}
}
}
func TestStripInactiveImageAssetIDsFromMarkdown_RemovesOnlyInactiveAttrs(t *testing.T) {
t.Parallel()
markdown := strings.Join([]string{
`
`,
`
`,
}, "\n")
got := stripInactiveImageAssetIDsFromMarkdown(markdown, map[int64]struct{}{
12: {},
})
if !strings.Contains(got, `data-asset-id="12"`) {
t.Fatalf("expected active asset id to remain, got %q", got)
}
if strings.Contains(got, `data-asset-id="34"`) {
t.Fatalf("expected inactive asset id to be removed, got %q", got)
}
if !strings.Contains(got, `inactive.webp`) {
t.Fatalf("expected image markup to remain after stripping asset id, got %q", got)
}
}
func TestStripInactiveImageAssetIDsFromMarkdown_RemovesAllAttrsWhenNoAssetsAreActive(t *testing.T) {
t.Parallel()
markdown := `
`
got := stripInactiveImageAssetIDsFromMarkdown(markdown, map[int64]struct{}{})
if strings.Contains(got, `data-asset-id="88"`) {
t.Fatalf("expected inactive asset id to be removed, got %q", got)
}
if !strings.Contains(got, `cover.webp`) {
t.Fatalf("expected image src to remain, got %q", got)
}
}