* Show Confirmation Dialogue WIP First Commit Show Confirmation Dialogue WIP Second Commit refactoring according to comments refactor code according to comments Fix linting problems add i18n strings Update regex pattern add test and make fixes fix message not submitting Fix linting fix index.js fix conflicts address PR comments address PR comments single dispatch Address PR comments add test * Show Confirmation Dialogue WIP First Commit Show Confirmation Dialogue WIP Second Commit refactoring according to comments refactor code according to comments Fix linting problems add i18n strings Update regex pattern add test and make fixes fix message not submitting Fix linting fix index.js fix conflicts address PR comments address PR comments single dispatch Address PR comments add test * make some changes * fix test failures * Address PR comments * Update app/mm-redux/types/channels.ts Co-authored-by: Elias Nahum <nahumhbl@gmail.com> * Update app/mm-redux/selectors/entities/channels.ts Co-authored-by: Elias Nahum <nahumhbl@gmail.com> * Update app/mm-redux/selectors/entities/channels.test.js Co-authored-by: Elias Nahum <nahumhbl@gmail.com> * Update app/constants/autocomplete.js Co-authored-by: Elias Nahum <nahumhbl@gmail.com> * Address PR comments * make group mention mapping its own function * Address PR comments * Update app/components/post_draft/post_draft.js Co-authored-by: Elias Nahum <nahumhbl@gmail.com> * Merge branch 'master' of https://github.com/mattermost/mattermost-mobile into MM-23785-ShowConfirmationDialogue-2 * Merge branch 'master' into MM-23785-ShowConfirmationDialogue-2 * Address MM-26987 * Retrieve group information on mount RN: Group Mention confirmation prompt not shown on default channel load * Update Regex to fix MM-26976 Co-authored-by: Elias Nahum <nahumhbl@gmail.com> Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
133 lines
No EOL
4.4 KiB
JavaScript
133 lines
No EOL
4.4 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
/* eslint-disable no-import-assign */
|
|
|
|
import {Permissions} from '@mm-redux/constants';
|
|
import * as channelSelectors from '@mm-redux/selectors/entities/channels';
|
|
import * as userSelectors from '@mm-redux/selectors/entities/users';
|
|
import * as generalSelectors from '@mm-redux/selectors/entities/general';
|
|
import * as preferenceSelectors from '@mm-redux/selectors/entities/preferences';
|
|
import * as roleSelectors from '@mm-redux/selectors/entities/roles';
|
|
import * as deviceSelectors from '@selectors/device';
|
|
|
|
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
|
|
|
import {mapStateToProps} from './index';
|
|
|
|
jest.mock('./post_draft', () => ({
|
|
__esModule: true,
|
|
default: jest.fn(),
|
|
}));
|
|
|
|
channelSelectors.getCurrentChannel = jest.fn().mockReturnValue({});
|
|
channelSelectors.isCurrentChannelReadOnly = jest.fn();
|
|
channelSelectors.getCurrentChannelStats = jest.fn();
|
|
userSelectors.getStatusForUserId = jest.fn();
|
|
generalSelectors.canUploadFilesOnMobile = jest.fn();
|
|
preferenceSelectors.getTheme = jest.fn();
|
|
roleSelectors.haveIChannelPermission = jest.fn();
|
|
deviceSelectors.isLandscape = jest.fn();
|
|
|
|
describe('mapStateToProps', () => {
|
|
const baseState = {
|
|
entities: {
|
|
general: {
|
|
config: {},
|
|
serverVersion: '',
|
|
},
|
|
users: {
|
|
profiles: {},
|
|
currentUserId: '',
|
|
},
|
|
channels: {
|
|
currentChannelId: '',
|
|
channelMemberCountsByGroup: {},
|
|
channels: {},
|
|
},
|
|
preferences: {
|
|
myPreferences: {},
|
|
},
|
|
teams: {
|
|
teams: {},
|
|
},
|
|
},
|
|
views: {
|
|
channel: {
|
|
drafts: {},
|
|
},
|
|
},
|
|
requests: {
|
|
files: {
|
|
uploadFiles: {
|
|
status: '',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const baseOwnProps = {};
|
|
|
|
test('haveIChannelPermission is not called when isMinimumServerVersion is not 5.22v', () => {
|
|
const state = {...baseState};
|
|
state.entities.general.serverVersion = '5.21';
|
|
|
|
mapStateToProps(state, baseOwnProps);
|
|
expect(isMinimumServerVersion(state.entities.general.serverVersion, 5, 22)).toBe(false);
|
|
|
|
expect(roleSelectors.haveIChannelPermission).not.toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
team: undefined,
|
|
permission: Permissions.CREATE_POST,
|
|
default: true,
|
|
});
|
|
|
|
expect(roleSelectors.haveIChannelPermission).not.toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
permission: Permissions.USE_CHANNEL_MENTIONS,
|
|
default: true,
|
|
});
|
|
});
|
|
|
|
test('haveIChannelPermission is called when isMinimumServerVersion is 5.22v', () => {
|
|
const state = {...baseState};
|
|
state.entities.general.serverVersion = '5.22';
|
|
|
|
mapStateToProps(state, baseOwnProps);
|
|
expect(isMinimumServerVersion(state.entities.general.serverVersion, 5, 22)).toBe(true);
|
|
|
|
expect(roleSelectors.haveIChannelPermission).toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
team: undefined,
|
|
permission: Permissions.CREATE_POST,
|
|
default: true,
|
|
});
|
|
|
|
expect(roleSelectors.haveIChannelPermission).toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
permission: Permissions.USE_CHANNEL_MENTIONS,
|
|
default: true,
|
|
});
|
|
});
|
|
|
|
test('haveIChannelPermission is not called when isMinimumServerVersion is 5.22v but currentChannel is null', () => {
|
|
channelSelectors.getCurrentChannel = jest.fn().mockReturnValue(null);
|
|
|
|
const state = {...baseState};
|
|
state.entities.general.serverVersion = '5.22';
|
|
|
|
mapStateToProps(state, baseOwnProps);
|
|
expect(isMinimumServerVersion(state.entities.general.serverVersion, 5, 22)).toBe(true);
|
|
|
|
expect(roleSelectors.haveIChannelPermission).not.toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
team: undefined,
|
|
permission: Permissions.CREATE_POST,
|
|
});
|
|
|
|
expect(roleSelectors.haveIChannelPermission).not.toHaveBeenCalledWith(state, {
|
|
channel: undefined,
|
|
permission: Permissions.USE_CHANNEL_MENTIONS,
|
|
});
|
|
});
|
|
}); |