diff --git a/app/soapbox/normalizers/__tests__/notification-test.js b/app/soapbox/normalizers/__tests__/notification-test.js new file mode 100644 index 000000000..c90b5451e --- /dev/null +++ b/app/soapbox/normalizers/__tests__/notification-test.js @@ -0,0 +1,17 @@ +import { Record as ImmutableRecord, fromJS } from 'immutable'; + +import { normalizeNotification } from '../notification'; + +describe('normalizeNotification()', () => { + it('normalizes an empty map', () => { + const notification = fromJS({}); + const result = normalizeNotification(notification); + + expect(ImmutableRecord.isRecord(result)).toBe(true); + expect(result.type).toEqual(''); + expect(result.account).toBe(null); + expect(result.target).toBe(null); + expect(result.status).toBe(null); + expect(result.id).toEqual(''); + }); +}); diff --git a/app/soapbox/normalizers/notification.ts b/app/soapbox/normalizers/notification.ts new file mode 100644 index 000000000..ab369a52b --- /dev/null +++ b/app/soapbox/normalizers/notification.ts @@ -0,0 +1,20 @@ +import { + Map as ImmutableMap, + Record as ImmutableRecord, +} from 'immutable'; + +// https://docs.joinmastodon.org/entities/notification/ +const NotificationRecord = ImmutableRecord({ + account: null, + chat_message: null, // pleroma:chat_mention + created_at: new Date(), + emoji: null, // pleroma:emoji_reaction + id: '', + status: null, + target: null, // move + type: '', +}); + +export const normalizeNotification = (notification: ImmutableMap) => { + return NotificationRecord(notification); +};