* Properly determine if channel is archived * Remove check on ownProps.channelIsArchived
This commit is contained in:
parent
dca0d5e75b
commit
5f2d840f27
2 changed files with 119 additions and 2 deletions
|
|
@ -32,7 +32,7 @@ import PostBody from './post_body';
|
|||
|
||||
const POST_TIMEOUT = 20000;
|
||||
|
||||
function makeMapStateToProps() {
|
||||
export function makeMapStateToProps() {
|
||||
const memoizeHasEmojisOnly = memoizeResult((message, customEmojis) => hasEmojisOnly(message, customEmojis));
|
||||
const getReactionsForPost = makeGetReactionsForPost();
|
||||
|
||||
|
|
@ -61,9 +61,10 @@ function makeMapStateToProps() {
|
|||
const roles = getCurrentUserId(state) ? getCurrentUserRoles(state) : '';
|
||||
const isAdmin = checkIsAdmin(roles);
|
||||
const isSystemAdmin = checkIsSystemAdmin(roles);
|
||||
const channelIsArchived = channel?.delete_at !== 0; //eslint-disable-line camelcase
|
||||
let canDelete = false;
|
||||
|
||||
if (post && !ownProps.channelIsArchived) {
|
||||
if (post && !channelIsArchived) {
|
||||
canDelete = canDeletePost(state, config, license, currentTeamId, currentChannelId, currentUserId, post, isAdmin, isSystemAdmin);
|
||||
}
|
||||
|
||||
|
|
|
|||
116
app/components/post_body/index.test.js
Normal file
116
app/components/post_body/index.test.js
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {getChannel} from 'mattermost-redux/selectors/entities/channels';
|
||||
import * as PostUtils from 'mattermost-redux/utils/post_utils';
|
||||
|
||||
import {makeMapStateToProps} from './index.js';
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/channels', () => {
|
||||
const channels = require.requireActual('mattermost-redux/selectors/entities/channels');
|
||||
|
||||
return {
|
||||
...channels,
|
||||
getChannel: jest.fn(),
|
||||
canManageChannelMembers: jest.fn(),
|
||||
getCurrentChannelId: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/preferences', () => {
|
||||
const preferences = require.requireActual('mattermost-redux/selectors/entities/preferences');
|
||||
return {
|
||||
...preferences,
|
||||
getTheme: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/general', () => {
|
||||
const general = require.requireActual('mattermost-redux/selectors/entities/general');
|
||||
return {
|
||||
...general,
|
||||
getConfig: jest.fn(),
|
||||
getLicense: jest.fn().mockReturnValue({}),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/users', () => {
|
||||
const users = require.requireActual('mattermost-redux/selectors/entities/users');
|
||||
return {
|
||||
...users,
|
||||
getCurrentUserId: jest.fn(),
|
||||
getCurrentUserRoles: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/teams', () => {
|
||||
const teams = require.requireActual('mattermost-redux/selectors/entities/teams');
|
||||
return {
|
||||
...teams,
|
||||
getCurrentTeamId: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/emojis', () => {
|
||||
const emojis = require.requireActual('mattermost-redux/selectors/entities/emojis');
|
||||
return {
|
||||
...emojis,
|
||||
getCustomEmojisByName: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('mattermost-redux/selectors/entities/posts', () => {
|
||||
const posts = require.requireActual('mattermost-redux/selectors/entities/posts');
|
||||
return {
|
||||
...posts,
|
||||
makeGetReactionsForPost: () => jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('app/selectors/device', () => ({
|
||||
getDimensions: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('makeMapStateToProps', () => {
|
||||
const defaultState = {
|
||||
entities: {
|
||||
general: {
|
||||
serverVersion: '',
|
||||
},
|
||||
},
|
||||
};
|
||||
const defaultOwnProps = {
|
||||
post: {},
|
||||
};
|
||||
|
||||
test('should not call canDeletePost if post is not defined', () => {
|
||||
const canDeletePost = jest.spyOn(PostUtils, 'canDeletePost');
|
||||
const mapStateToProps = makeMapStateToProps();
|
||||
const ownProps = {
|
||||
post: '',
|
||||
};
|
||||
|
||||
const props = mapStateToProps(defaultState, ownProps);
|
||||
expect(props.canDelete).toBe(false);
|
||||
expect(canDeletePost).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test('should not call canDeletePost if post is defined and channel is archived', () => {
|
||||
const canDeletePost = jest.spyOn(PostUtils, 'canDeletePost');
|
||||
const mapStateToProps = makeMapStateToProps();
|
||||
|
||||
getChannel.mockReturnValueOnce({delete_at: 1}); //eslint-disable-line camelcase
|
||||
const props = mapStateToProps(defaultState, defaultOwnProps);
|
||||
expect(props.canDelete).toBe(false);
|
||||
expect(canDeletePost).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test('should call canDeletePost if post is defined and channel is not archived', () => {
|
||||
const canDeletePost = jest.spyOn(PostUtils, 'canDeletePost');
|
||||
const mapStateToProps = makeMapStateToProps();
|
||||
|
||||
getChannel.mockReturnValue({delete_at: 0}); //eslint-disable-line camelcase
|
||||
mapStateToProps(defaultState, defaultOwnProps);
|
||||
expect(canDeletePost).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue