package fqapi import "testing" // TestCollectMangaFallbackURIs skeleton 顺序优先、web_uri/md5 取值与原图直链拼接 func TestCollectMangaFallbackURIs(t *testing.T) { payload := map[string]interface{}{ "materials": map[string]interface{}{ "img_1": map[string]interface{}{"data": map[string]interface{}{"web_uri": "novel-pic/aaa"}}, "img_2": map[string]interface{}{"data": map[string]interface{}{"web_uri": "/novel-pic/bbb"}}, "img_3": map[string]interface{}{"data": map[string]interface{}{"md5": "c0ffee"}}, }, "skeleton": map[string]interface{}{ "data": []interface{}{ map[string]interface{}{"elementInfo": "img_2"}, map[string]interface{}{"key": "img_1"}, map[string]interface{}{"id": "img_3"}, }, }, } // 页序以 skeleton 引用顺序为准 want := []string{ "https://p6-novel.byteimg.com/origin/novel-pic/bbb", "https://p6-novel.byteimg.com/origin/novel-pic/aaa", "https://p6-novel.byteimg.com/origin/novel-pic/c0ffee", } got := collectMangaFallbackURIs(payload) if len(got) != len(want) { t.Fatalf("got %d 张 want %d 张: %v", len(got), len(want), got) } for i := range want { if got[i] != want[i] { t.Errorf("[%d] got %s want %s", i, got[i], want[i]) } } // 无 skeleton 时退化为 materials key 末尾数字排序 delete(payload, "skeleton") got = collectMangaFallbackURIs(payload) if got[0] != want[1] || got[1] != want[0] { t.Errorf("key 排序错误: %v", got) } }