From 21b250c6eaef291ff460209a58736c7cd5c2c0f0 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 21 May 2020 23:17:11 -0500 Subject: [PATCH] Add tests for emoji utils --- .../utils/__tests__/emoji_reacts-test.js | 40 +++++++++++++++++++ app/gabsocial/utils/emoji_reacts.js | 8 ++++ 2 files changed, 48 insertions(+) diff --git a/app/gabsocial/utils/__tests__/emoji_reacts-test.js b/app/gabsocial/utils/__tests__/emoji_reacts-test.js index 8df3cb674..aad46335c 100644 --- a/app/gabsocial/utils/__tests__/emoji_reacts-test.js +++ b/app/gabsocial/utils/__tests__/emoji_reacts-test.js @@ -2,7 +2,9 @@ import { sortEmoji, mergeEmojiFavourites, filterEmoji, + oneEmojiPerAccount, reduceEmoji, + getReactForStatus, } from '../emoji_reacts'; import { fromJS } from 'immutable'; @@ -114,3 +116,41 @@ describe('reduceEmoji', () => { }); }); }); + +describe('oneEmojiPerAccount', () => { + it('reduces to one react per account', () => { + const emojiReacts = fromJS([ + // Sorted + { 'count': 20, 'me': true, 'name': '👍', accounts: [{ id: '1' }, { id: '2' }] }, + { 'count': 15, 'me': true, 'name': '❤', accounts: [{ id: '1' }, { id: '2' }] }, + { 'count': 7, 'me': true, 'name': '😯', accounts: [{ id: '1' }] }, + { 'count': 7, 'me': false, 'name': '😂', accounts: [{ id: '3' }] }, + ]); + expect(oneEmojiPerAccount(emojiReacts)).toEqual(fromJS([ + { 'count': 20, 'me': true, 'name': '👍', accounts: [{ id: '1' }, { id: '2' }] }, + { 'count': 7, 'me': false, 'name': '😂', accounts: [{ id: '3' }] }, + ])); + }); +}); + +describe('getReactForStatus', () => { + it('returns a single owned react (including favourite) for the status', () => { + const status = fromJS({ + favourited: false, + pleroma: { + emoji_reactions: [ + { 'count': 20, 'me': false, 'name': '👍' }, + { 'count': 15, 'me': true, 'name': '❤' }, + { 'count': 7, 'me': true, 'name': '😯' }, + { 'count': 7, 'me': false, 'name': '😂' }, + ], + }, + }); + expect(getReactForStatus(status)).toEqual('❤'); + }); + + it('returns a thumbs-up for a favourite', () => { + const status = fromJS({ favourited: true }); + expect(getReactForStatus(status)).toEqual('👍'); + }); +}); diff --git a/app/gabsocial/utils/emoji_reacts.js b/app/gabsocial/utils/emoji_reacts.js index ae426dedc..4d49c0783 100644 --- a/app/gabsocial/utils/emoji_reacts.js +++ b/app/gabsocial/utils/emoji_reacts.js @@ -30,6 +30,10 @@ export const mergeEmojiFavourites = (emojiReacts, favouritesCount) => { } }; +export const oneEmojiPerAccount = emojiReacts => { + return; // TODO +}; + export const filterEmoji = emojiReacts => ( emojiReacts.filter(emojiReact => ( ALLOWED_EMOJI.includes(emojiReact.get('name')) @@ -39,3 +43,7 @@ export const reduceEmoji = (emojiReacts, favouritesCount) => ( sortEmoji(filterEmoji(mergeEmoji(mergeEmojiFavourites( emojiReacts, favouritesCount ))))); + +export const getReactForStatus = status => { + return; // TODO +};