Files
purewhiter--mobilegym/tests/xRuntimePostResolver.test.ts
wehub-resource-sync 2114b14ee0
Sync main into demo / sync (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:26 +08:00

67 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { resolveXRuntimePost, resolveXRuntimePosts } from '../apps/X/utils/runtimePostResolver';
describe('X runtime post resolver', () => {
it('treats a runtime object as a full override for the matching base post', () => {
const base = {
id: 'p1',
authorId: 'u_base',
content: 'base content',
time: '1h',
stats: { comments: 1, retweets: 2, likes: 3, views: 4 },
};
const override = { id: 'p1', content: 'override content' };
expect(
resolveXRuntimePost(
{ p1: override as any },
new Map([['p1', base]]),
'p1',
),
).toBe(override);
});
it('returns null when a runtime tombstone hides a base post', () => {
const base = {
id: 'p1',
authorId: 'u_base',
content: 'base content',
time: '1h',
stats: { comments: 1, retweets: 2, likes: 3, views: 4 },
};
expect(resolveXRuntimePost({ p1: null }, new Map([['p1', base]]), 'p1')).toBeNull();
});
it('keeps runtime overrides and tombstones in resolved post lists', () => {
const basePosts = [
{
id: 'p1',
authorId: 'u_base',
content: 'base content',
time: '1h',
stats: { comments: 1, retweets: 2, likes: 3, views: 4 },
},
{
id: 'p2',
authorId: 'u_base',
content: 'hidden content',
time: '2h',
stats: { comments: 0, retweets: 0, likes: 0, views: 0 },
},
];
const override = { id: 'p1', content: 'override content' };
expect(
resolveXRuntimePosts(
{
p1: override as any,
p2: null,
},
basePosts,
),
).toEqual([override]);
});
});