fix: show recommended card thumbnails
This commit is contained in:
93
src/utils/postResourceAdapter.test.ts
Normal file
93
src/utils/postResourceAdapter.test.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import type { Post } from "../types/post";
|
||||
import { postToResource } from "./postResourceAdapter";
|
||||
|
||||
const basePost: Post = {
|
||||
id: "post-1",
|
||||
postType: "link",
|
||||
categoryId: 1,
|
||||
categorySlug: "official-announcement",
|
||||
language: "zh",
|
||||
title: "Link post",
|
||||
text: "https://example.com/article",
|
||||
attachments: [],
|
||||
isRecommended: true,
|
||||
publishedAt: "2026-05-30T00:00:00Z",
|
||||
};
|
||||
|
||||
describe("postToResource", () => {
|
||||
it("uses link preview images as the resource cover when there is no attachment", () => {
|
||||
const resource = postToResource(
|
||||
{
|
||||
...basePost,
|
||||
linkPreview: {
|
||||
url: "https://example.com/article",
|
||||
canonicalUrl: "https://example.com/article",
|
||||
siteName: "Example",
|
||||
title: "Example article",
|
||||
description: "Example description",
|
||||
imageUrl: "https://example.com/preview.jpg",
|
||||
},
|
||||
},
|
||||
"zh-TW",
|
||||
);
|
||||
|
||||
expect(resource.coverImage).toBe("https://example.com/preview.jpg");
|
||||
expect(resource.previewUrl).toBe("https://example.com/preview.jpg");
|
||||
});
|
||||
|
||||
it("uses document thumbnails before poster URLs", () => {
|
||||
const resource = postToResource(
|
||||
{
|
||||
...basePost,
|
||||
postType: "pdf",
|
||||
attachments: [
|
||||
{
|
||||
id: "att-1",
|
||||
kind: "document",
|
||||
url: "/uploads/file.pdf",
|
||||
mime: "application/pdf",
|
||||
filename: "file.pdf",
|
||||
sizeBytes: 123,
|
||||
posterUrl: "/uploads/file.pdf",
|
||||
thumbnailUrl: "/uploads/thumb.jpg",
|
||||
},
|
||||
],
|
||||
},
|
||||
"zh-TW",
|
||||
);
|
||||
|
||||
expect(resource.coverImage).toBe("/uploads/thumb.jpg");
|
||||
expect(resource.previewUrl).toBe("/uploads/thumb.jpg");
|
||||
});
|
||||
|
||||
it("keeps an attachment thumbnail ahead of a link preview image", () => {
|
||||
const resource = postToResource(
|
||||
{
|
||||
...basePost,
|
||||
attachments: [
|
||||
{
|
||||
id: "att-1",
|
||||
kind: "image",
|
||||
url: "/uploads/full.jpg",
|
||||
mime: "image/jpeg",
|
||||
filename: "full.jpg",
|
||||
sizeBytes: 123,
|
||||
thumbnailUrl: "/uploads/thumb.jpg",
|
||||
},
|
||||
],
|
||||
linkPreview: {
|
||||
url: "https://example.com/article",
|
||||
canonicalUrl: "https://example.com/article",
|
||||
siteName: "Example",
|
||||
title: "Example article",
|
||||
description: "Example description",
|
||||
imageUrl: "https://example.com/preview.jpg",
|
||||
},
|
||||
},
|
||||
"zh-TW",
|
||||
);
|
||||
|
||||
expect(resource.coverImage).toBe("/uploads/thumb.jpg");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user