Files
Synapsis/src/lib/swarm/feed-post.test.ts
T
cyph3rasi 1b9857b427 Preserve embedded original posts when rendering swarm reposts
Hop-State: A_06FPEZ3WB9ZANP4K6YVY4S0
Hop-Proposal: R_06FPEZ34Y13T1DBP9HTRMBR
Hop-Task: T_06FPEYF7BR1M5HZ8Z1684KG
Hop-Attempt: AT_06FPEYF7BS5KHWEJRTK2PW0
2026-07-15 13:33:59 -07:00

83 lines
2.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import type { SwarmPost } from '@/app/api/swarm/timeline/route';
import { mapSwarmPostToPost } from './feed-post';
const original: SwarmPost = {
id: 'original-id',
content: 'Original post body',
createdAt: '2026-07-15T18:49:15.000Z',
author: {
handle: 'original-author',
displayName: 'Original Author',
avatarUrl: 'https://example.com/original.png',
isNsfw: false,
},
nodeDomain: 'remote.example',
nodeIsNsfw: true,
isNsfw: false,
likeCount: 2,
repostCount: 1,
replyCount: 0,
media: [{ url: 'https://example.com/image.jpg', mimeType: 'image/jpeg' }],
};
describe('mapSwarmPostToPost', () => {
it('preserves the complete embedded original when mapping a repost', () => {
const repost: SwarmPost = {
id: 'repost-id',
content: '',
createdAt: '2026-07-15T20:07:48.000Z',
repostOfId: original.id,
repostOf: original,
author: {
handle: 'reposter',
displayName: 'Reposter',
isNsfw: false,
},
nodeDomain: 'remote.example',
nodeIsNsfw: true,
isNsfw: false,
likeCount: 0,
repostCount: 0,
replyCount: 0,
};
const mapped = mapSwarmPostToPost(repost);
expect(mapped.repostOfId).toBe('swarm:remote.example:original-id');
expect(mapped.repostOf).toMatchObject({
id: 'swarm:remote.example:original-id',
content: 'Original post body',
nodeDomain: 'remote.example',
author: {
handle: 'original-author',
nodeIsNsfw: true,
},
media: [{
id: 'swarm:remote.example:original-id:media:0',
url: 'https://example.com/image.jpg',
mimeType: 'image/jpeg',
}],
});
});
it('preserves interaction and link-preview fields', () => {
const mapped = mapSwarmPostToPost({
...original,
isLiked: true,
isReposted: true,
linkPreviewUrl: 'https://example.com/story',
linkPreviewTitle: 'Story',
linkPreviewType: 'card',
});
expect(mapped).toMatchObject({
isLiked: true,
isReposted: true,
linkPreviewUrl: 'https://example.com/story',
linkPreviewTitle: 'Story',
linkPreviewType: 'card',
});
});
});