From 33f20564c7e6790ea67927088b9313be20678581 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 26 Jul 2022 12:53:08 -0500 Subject: [PATCH] Compose: add mentions from text test --- app/soapbox/actions/__tests__/compose.test.ts | 28 +++++++++++++++++-- app/soapbox/actions/compose.ts | 2 +- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/soapbox/actions/__tests__/compose.test.ts b/app/soapbox/actions/__tests__/compose.test.ts index 6a9ac6e43..88f8c8858 100644 --- a/app/soapbox/actions/__tests__/compose.test.ts +++ b/app/soapbox/actions/__tests__/compose.test.ts @@ -1,9 +1,10 @@ -import { Map as ImmutableMap } from 'immutable'; +import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; import { mockStore, rootState } from 'soapbox/jest/test-helpers'; import { InstanceRecord } from 'soapbox/normalizers'; -import { uploadCompose } from '../compose'; +import { uploadCompose, submitCompose } from '../compose'; +import { STATUS_CREATE_REQUEST } from '../statuses'; import type { IntlShape } from 'react-intl'; @@ -112,3 +113,26 @@ describe('uploadCompose()', () => { }); }); }); + +describe('submitCompose()', () => { + it('inserts mentions from text', async() => { + const state = rootState + .set('me', '123') + .setIn(['compose', 'text'], '@alex hello @mkljczk@pl.fediverse.pl @gg@汉语/漢語.com alex@alexgleason.me'); + + const store = mockStore(state); + await store.dispatch(submitCompose()); + const actions = store.getActions(); + + const statusCreateRequest = actions.find(action => action.type === STATUS_CREATE_REQUEST); + const to = statusCreateRequest!.params.to as ImmutableOrderedSet; + + const expected = [ + 'alex', + 'mkljczk@pl.fediverse.pl', + 'gg@汉语/漢語.com', + ]; + + expect(to.toJS()).toEqual(expected); + }); +}); diff --git a/app/soapbox/actions/compose.ts b/app/soapbox/actions/compose.ts index d2559c1f7..450b2ef50 100644 --- a/app/soapbox/actions/compose.ts +++ b/app/soapbox/actions/compose.ts @@ -229,7 +229,7 @@ const validateSchedule = (state: RootState) => { return schedule.getTime() > fiveMinutesFromNow.getTime(); }; -const submitCompose = (routerHistory: History, force = false) => +const submitCompose = (routerHistory?: History, force = false) => (dispatch: AppDispatch, getState: () => RootState) => { if (!isLoggedIn(getState)) return; const state = getState();