73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
import { sortPosts } from './blog.util';
|
|
|
|
describe('sortPosts', () => {
|
|
test('sort from latest to earliest', () => {
|
|
const posts = [
|
|
createPost({ date: '2022-01-01', title: 'Post 1', slug: 'post-1' }),
|
|
createPost({ date: '2023-01-01', title: 'Post 2', slug: 'post-2' }),
|
|
];
|
|
|
|
const results = sortPosts(posts);
|
|
|
|
expect(results.map((p) => p.slug)).toEqual(['post-2', 'post-1']);
|
|
});
|
|
|
|
test('latest pinned posts are presented first', () => {
|
|
const posts = [
|
|
createPost({
|
|
date: '2023-01-01',
|
|
title: 'Post 1',
|
|
slug: 'post-1',
|
|
pinned: true,
|
|
}),
|
|
createPost({ date: '2023-02-01', title: 'Post 2', slug: 'post-2' }),
|
|
createPost({
|
|
date: '2023-03-01',
|
|
title: 'Post 3',
|
|
slug: 'post-3',
|
|
pinned: true,
|
|
}),
|
|
createPost({
|
|
date: '2023-04-01',
|
|
title: 'Post 4',
|
|
slug: 'post-4',
|
|
pinned: true,
|
|
}),
|
|
createPost({ date: '2023-05-01', title: 'Post 5', slug: 'post-5' }),
|
|
];
|
|
|
|
const results = sortPosts(posts);
|
|
|
|
expect(results.map((p) => p.slug)).toEqual([
|
|
'post-4',
|
|
'post-3',
|
|
'post-1',
|
|
'post-5',
|
|
'post-2',
|
|
]);
|
|
});
|
|
});
|
|
|
|
function createPost(data: {
|
|
date: string;
|
|
title: string;
|
|
slug: string;
|
|
pinned?: boolean;
|
|
}) {
|
|
return {
|
|
content: '',
|
|
filePath: `${data.slug}.md`,
|
|
slug: data.slug,
|
|
date: data.date,
|
|
title: data.title,
|
|
description: '',
|
|
authors: [],
|
|
ogImage: '',
|
|
ogImageType: '',
|
|
cover_image: '',
|
|
tags: [],
|
|
reposts: [],
|
|
pinned: data.pinned ?? undefined,
|
|
};
|
|
}
|