nx/nx-dev/data-access-documents/src/lib/blog.util.spec.ts
2024-07-31 06:48:42 -07:00

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,
};
}