Files
mastodon-sakyey/app/javascript/mastodon/actions/timelines.test.ts

86 lines
2.1 KiB
TypeScript

import { parseTimelineKey, timelineKey } from './timelines_typed';
describe('timelineKey', () => {
test('returns expected key for account timeline with filters', () => {
const key = timelineKey({
type: 'account',
userId: '123',
replies: true,
boosts: false,
media: true,
});
expect(key).toBe('account:123:0110');
});
test('returns expected key for account timeline with tag', () => {
const key = timelineKey({
type: 'account',
userId: '456',
tagged: 'nature',
replies: true,
});
expect(key).toBe('account:456:0100:nature');
});
test('returns expected key for account timeline with pins', () => {
const key = timelineKey({
type: 'account',
userId: '789',
pinned: true,
});
expect(key).toBe('account:789:0001');
});
});
describe('parseTimelineKey', () => {
test('parses account timeline key with filters correctly', () => {
const params = parseTimelineKey('account:123:1010');
expect(params).toEqual({
type: 'account',
userId: '123',
boosts: true,
replies: false,
media: true,
pinned: false,
});
});
test('parses account timeline key with tag correctly', () => {
const params = parseTimelineKey('account:456:0100:nature');
expect(params).toEqual({
type: 'account',
userId: '456',
replies: true,
boosts: false,
media: false,
pinned: false,
tagged: 'nature',
});
});
test('parses legacy account timeline key with pinned correctly', () => {
const params = parseTimelineKey('account:789:pinned:nature');
expect(params).toEqual({
type: 'account',
userId: '789',
replies: false,
boosts: false,
media: false,
pinned: true,
tagged: 'nature',
});
});
test('parses legacy account timeline key with media correctly', () => {
const params = parseTimelineKey('account:789:media');
expect(params).toEqual({
type: 'account',
userId: '789',
replies: false,
boosts: false,
media: true,
pinned: false,
});
});
});