From 9931ec209b31f550f2fa5ee67e61be06667ea810 Mon Sep 17 00:00:00 2001 From: Miguel Alatzar Date: Tue, 21 May 2019 09:11:45 -0700 Subject: [PATCH] Allow flagging of read-only channel posts (#2801) --- app/screens/post_options/index.js | 6 +-- app/screens/post_options/index.test.js | 51 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 app/screens/post_options/index.test.js diff --git a/app/screens/post_options/index.js b/app/screens/post_options/index.js index 42fe49a69..aa0fd3b7f 100644 --- a/app/screens/post_options/index.js +++ b/app/screens/post_options/index.js @@ -27,7 +27,7 @@ import {getDimensions} from 'app/selectors/device'; import PostOptions from './post_options'; -function mapStateToProps(state, ownProps) { +export function mapStateToProps(state, ownProps) { const post = ownProps.post; const channel = getChannel(state, post.channel_id) || {}; const config = getConfig(state); @@ -74,10 +74,6 @@ function mapStateToProps(state, ownProps) { } } - if (ownProps.channelIsReadOnly) { - canFlag = false; - } - if (ownProps.isSystemMessage) { canAddReaction = false; canReply = false; diff --git a/app/screens/post_options/index.test.js b/app/screens/post_options/index.test.js new file mode 100644 index 000000000..6ae7de39c --- /dev/null +++ b/app/screens/post_options/index.test.js @@ -0,0 +1,51 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. +import {mapStateToProps} from './index'; + +import * as channelSelectors from 'mattermost-redux/selectors/entities/channels'; +import * as generalSelectors from 'mattermost-redux/selectors/entities/general'; +import * as userSelectors from 'mattermost-redux/selectors/entities/users'; +import * as commonSelectors from 'mattermost-redux/selectors/entities/common'; +import * as teamSelectors from 'mattermost-redux/selectors/entities/teams'; +import * as deviceSelectors from 'app/selectors/device'; +import * as preferencesSelectors from 'mattermost-redux/selectors/entities/preferences'; + +channelSelectors.getChannel = jest.fn(); +channelSelectors.getCurrentChannelId = jest.fn(); +generalSelectors.getConfig = jest.fn(); +generalSelectors.getLicense = jest.fn(); +generalSelectors.hasNewPermissions = jest.fn(); +userSelectors.getCurrentUserId = jest.fn(); +commonSelectors.getCurrentUserId = jest.fn(); +commonSelectors.getCurrentChannelId = jest.fn(); +teamSelectors.getCurrentTeamId = jest.fn(); +teamSelectors.getCurrentTeamUrl = jest.fn(); +deviceSelectors.getDimensions = jest.fn(); +preferencesSelectors.getTheme = jest.fn(); + +describe('mapStateToProps', () => { + const baseState = {}; + const baseOwnProps = { + post: {}, + }; + + test('canFlag is false for system messages', () => { + const ownProps = { + ...baseOwnProps, + isSystemMessage: true, + }; + + const props = mapStateToProps(baseState, ownProps); + expect(props.canFlag).toBe(false); + }); + + test('canFlag is true for non-system messages', () => { + const ownProps = { + ...baseOwnProps, + isSystemMessage: false, + }; + + const props = mapStateToProps(baseState, ownProps); + expect(props.canFlag).toBe(true); + }); +}); \ No newline at end of file