diff options
author | Saturnino Abril <saturnino.abril@gmail.com> | 2017-08-17 17:14:59 +0800 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-08-17 10:14:59 +0100 |
commit | 4e92d1801733410c47bdde29c4bda4d52210d4e7 (patch) | |
tree | dffafdeed193e213f5249605f1467625e202eaf8 /webapp | |
parent | f80d50adbddf55a043dfcab5b47d7c1e22749b7d (diff) | |
download | chat-4e92d1801733410c47bdde29c4bda4d52210d4e7.tar.gz chat-4e92d1801733410c47bdde29c4bda4d52210d4e7.tar.bz2 chat-4e92d1801733410c47bdde29c4bda4d52210d4e7.zip |
set ephemeral message ("message deleted") without ("Only visible to you") visible to users other than the owner (#7201)
Diffstat (limited to 'webapp')
3 files changed, 715 insertions, 1 deletions
diff --git a/webapp/components/post_view/post_info/post_info.jsx b/webapp/components/post_view/post_info/post_info.jsx index 5f3701761..21492b92f 100644 --- a/webapp/components/post_view/post_info/post_info.jsx +++ b/webapp/components/post_view/post_info/post_info.jsx @@ -11,6 +11,7 @@ import * as Utils from 'utils/utils.jsx'; import * as PostUtils from 'utils/post_utils.jsx'; import {emitEmojiPosted} from 'actions/post_actions.jsx'; import Constants from 'utils/constants.jsx'; +import {Posts} from 'mattermost-redux/constants'; import React from 'react'; import PropTypes from 'prop-types'; @@ -215,7 +216,7 @@ export default class PostInfo extends React.PureComponent { } let visibleMessage; - if (isEphemeral && !this.props.compactDisplay) { + if (isEphemeral && !this.props.compactDisplay && post.state !== Posts.POST_DELETED) { visibleMessage = ( <span className='post__visibility'> <FormattedMessage diff --git a/webapp/tests/components/post_view/post_info/__snapshots__/post_info.test.jsx.snap b/webapp/tests/components/post_view/post_info/__snapshots__/post_info.test.jsx.snap new file mode 100644 index 000000000..427467d68 --- /dev/null +++ b/webapp/tests/components/post_view/post_info/__snapshots__/post_info.test.jsx.snap @@ -0,0 +1,488 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`components/post_view/PostInfo should match snapshot 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={false} + isFlagged={false} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__reply" + > + <Connect(DotMenu) + commentCount={0} + handleCommentClick={[Function]} + handleDropdownOpened={[Function]} + idCount={-1} + idPrefix="center" + isFlagged={false} + post={ + Object { + "channel_id": "g6139tbospd18cmxroesdk3kkc", + "create_at": 1502715365009, + "delete_at": 0, + "edit_at": 1502715372443, + "hashtags": "", + "id": "e584uzbwwpny9kengqayx5ayzw", + "is_pinned": false, + "message": "post message", + "original_id": "", + "parent_id": "", + "pending_post_id": "", + "props": Object {}, + "root_id": "", + "type": "", + "update_at": 1502715372443, + "user_id": "b4pfxi8sn78y8yq7phzxxfor7h", + } + } + /> + <span> + <EmojiPickerOverlay + container={[Function]} + onEmojiClick={[Function]} + onHide={[Function]} + rightOffset={7} + show={false} + spaceRequiredAbove={422} + spaceRequiredBelow={436} + target={[Function]} + /> + <a + className="reacticon__container" + href="#" + onClick={[Function]} + > + <i + className="fa fa-smile-o" + /> + </a> + </span> + <CommentIcon + commentCount={0} + handleCommentClick={[Function]} + id="g6139tbospd18cmxroesdk3kkc_e584uzbwwpny9kengqayx5ayzw" + idCount={-1} + idPrefix="commentIcon" + searchStyle="" + /> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, compact display 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={false} + isFlagged={false} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__reply" + > + <Connect(DotMenu) + commentCount={0} + handleCommentClick={[Function]} + handleDropdownOpened={[Function]} + idCount={-1} + idPrefix="center" + isFlagged={false} + post={ + Object { + "channel_id": "g6139tbospd18cmxroesdk3kkc", + "create_at": 1502715365009, + "delete_at": 0, + "edit_at": 1502715372443, + "hashtags": "", + "id": "e584uzbwwpny9kengqayx5ayzw", + "is_pinned": false, + "message": "post message", + "original_id": "", + "parent_id": "", + "pending_post_id": "", + "props": Object {}, + "root_id": "", + "type": "", + "update_at": 1502715372443, + "user_id": "b4pfxi8sn78y8yq7phzxxfor7h", + } + } + /> + <span> + <EmojiPickerOverlay + container={[Function]} + onEmojiClick={[Function]} + onHide={[Function]} + rightOffset={7} + show={false} + spaceRequiredAbove={422} + spaceRequiredBelow={436} + target={[Function]} + /> + <a + className="reacticon__container" + href="#" + onClick={[Function]} + > + <i + className="fa fa-smile-o" + /> + </a> + </span> + <CommentIcon + commentCount={0} + handleCommentClick={[Function]} + id="g6139tbospd18cmxroesdk3kkc_e584uzbwwpny9kengqayx5ayzw" + idCount={-1} + idPrefix="commentIcon" + searchStyle="" + /> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, ephemeral deleted post 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={true} + isFlagged={true} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__remove" + > + <a + className="post__remove theme" + href="#" + onClick={[Function]} + type="button" + > + × + </a> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, ephemeral post 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={true} + isFlagged={true} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + <span + className="post__visibility" + > + <FormattedMessage + defaultMessage="(Only visible to you)" + id="post_info.message.visible" + values={Object {}} + /> + </span> + </div> + <div + className="col col__remove" + > + <a + className="post__remove theme" + href="#" + onClick={[Function]} + type="button" + > + × + </a> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, flagged post 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={false} + isFlagged={true} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__reply" + > + <Connect(DotMenu) + commentCount={0} + handleCommentClick={[Function]} + handleDropdownOpened={[Function]} + idCount={-1} + idPrefix="center" + isFlagged={true} + post={ + Object { + "channel_id": "g6139tbospd18cmxroesdk3kkc", + "create_at": 1502715365009, + "delete_at": 0, + "edit_at": 1502715372443, + "hashtags": "", + "id": "e584uzbwwpny9kengqayx5ayzw", + "is_pinned": false, + "message": "post message", + "original_id": "", + "parent_id": "", + "pending_post_id": "", + "props": Object {}, + "root_id": "", + "type": "", + "update_at": 1502715372443, + "user_id": "b4pfxi8sn78y8yq7phzxxfor7h", + } + } + /> + <span> + <EmojiPickerOverlay + container={[Function]} + onEmojiClick={[Function]} + onHide={[Function]} + rightOffset={7} + show={false} + spaceRequiredAbove={422} + spaceRequiredBelow={436} + target={[Function]} + /> + <a + className="reacticon__container" + href="#" + onClick={[Function]} + > + <i + className="fa fa-smile-o" + /> + </a> + </span> + <CommentIcon + commentCount={0} + handleCommentClick={[Function]} + id="g6139tbospd18cmxroesdk3kkc_e584uzbwwpny9kengqayx5ayzw" + idCount={-1} + idPrefix="commentIcon" + searchStyle="" + /> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, military time 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={true} + /> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={false} + isFlagged={false} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__reply" + > + <Connect(DotMenu) + commentCount={0} + handleCommentClick={[Function]} + handleDropdownOpened={[Function]} + idCount={-1} + idPrefix="center" + isFlagged={false} + post={ + Object { + "channel_id": "g6139tbospd18cmxroesdk3kkc", + "create_at": 1502715365009, + "delete_at": 0, + "edit_at": 1502715372443, + "hashtags": "", + "id": "e584uzbwwpny9kengqayx5ayzw", + "is_pinned": false, + "message": "post message", + "original_id": "", + "parent_id": "", + "pending_post_id": "", + "props": Object {}, + "root_id": "", + "type": "", + "update_at": 1502715372443, + "user_id": "b4pfxi8sn78y8yq7phzxxfor7h", + } + } + /> + <CommentIcon + commentCount={0} + handleCommentClick={[Function]} + id="g6139tbospd18cmxroesdk3kkc_e584uzbwwpny9kengqayx5ayzw" + idCount={-1} + idPrefix="commentIcon" + searchStyle="" + /> + </div> +</div> +`; + +exports[`components/post_view/PostInfo should match snapshot, pinned post 1`] = ` +<div + className="post__header--info" +> + <div + className="col" + > + <PostTime + eventTime={1502715365009} + postId="e584uzbwwpny9kengqayx5ayzw" + useMilitaryTime={false} + /> + <span + className="post__pinned-badge" + > + <FormattedMessage + defaultMessage="Pinned" + id="post_info.pinned" + values={Object {}} + /> + </span> + <PostFlagIcon + idCount={-1} + idPrefix="centerPostFlag" + isEphemeral={false} + isFlagged={true} + postId="e584uzbwwpny9kengqayx5ayzw" + /> + </div> + <div + className="col col__reply" + > + <Connect(DotMenu) + commentCount={0} + handleCommentClick={[Function]} + handleDropdownOpened={[Function]} + idCount={-1} + idPrefix="center" + isFlagged={true} + post={ + Object { + "channel_id": "g6139tbospd18cmxroesdk3kkc", + "create_at": 1502715365009, + "delete_at": 0, + "edit_at": 1502715372443, + "hashtags": "", + "id": "e584uzbwwpny9kengqayx5ayzw", + "is_pinned": true, + "message": "post message", + "original_id": "", + "parent_id": "", + "pending_post_id": "", + "props": Object {}, + "root_id": "", + "type": "", + "update_at": 1502715372443, + "user_id": "b4pfxi8sn78y8yq7phzxxfor7h", + } + } + /> + <span> + <EmojiPickerOverlay + container={[Function]} + onEmojiClick={[Function]} + onHide={[Function]} + rightOffset={7} + show={false} + spaceRequiredAbove={422} + spaceRequiredBelow={436} + target={[Function]} + /> + <a + className="reacticon__container" + href="#" + onClick={[Function]} + > + <i + className="fa fa-smile-o" + /> + </a> + </span> + <CommentIcon + commentCount={0} + handleCommentClick={[Function]} + id="g6139tbospd18cmxroesdk3kkc_e584uzbwwpny9kengqayx5ayzw" + idCount={-1} + idPrefix="commentIcon" + searchStyle="" + /> + </div> +</div> +`; diff --git a/webapp/tests/components/post_view/post_info/post_info.test.jsx b/webapp/tests/components/post_view/post_info/post_info.test.jsx new file mode 100644 index 000000000..d254226eb --- /dev/null +++ b/webapp/tests/components/post_view/post_info/post_info.test.jsx @@ -0,0 +1,225 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; +import {shallow} from 'enzyme'; + +import Constants from 'utils/constants.jsx'; +import PostInfo from 'components/post_view/post_info/post_info.jsx'; +import {Posts} from 'mattermost-redux/constants'; + +const post = { + channel_id: 'g6139tbospd18cmxroesdk3kkc', + create_at: 1502715365009, + delete_at: 0, + edit_at: 1502715372443, + hashtags: '', + id: 'e584uzbwwpny9kengqayx5ayzw', + is_pinned: false, + message: 'post message', + original_id: '', + parent_id: '', + pending_post_id: '', + props: {}, + root_id: '', + type: '', + update_at: 1502715372443, + user_id: 'b4pfxi8sn78y8yq7phzxxfor7h' +}; + +describe('components/post_view/PostInfo', () => { + afterEach(() => { + global.window.mm_config = null; + global.window.EnableEmojiPicker = null; + }); + + test('should match snapshot', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={false} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, compact display', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={false} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, military time', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'false'; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={true} + isFlagged={false} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, flagged post', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={true} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, pinned post', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + post.is_pinned = true; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={true} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, ephemeral post', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + post.is_pinned = false; + post.type = Constants.PostTypes.EPHEMERAL; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={true} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); + + test('should match snapshot, ephemeral deleted post', () => { + function emptyFunction() {} //eslint-disable-line no-empty-function + + global.window.mm_config = {}; + global.window.mm_config.EnableEmojiPicker = 'true'; + + post.type = Constants.PostTypes.EPHEMERAL; + post.state = Posts.POST_DELETED; + + const wrapper = shallow( + <PostInfo + post={post} + handleCommentClick={emptyFunction} + handleDropdownOpened={emptyFunction} + compactDisplay={false} + lastPostCount={0} + replyCount={0} + getPostList={emptyFunction} + useMilitaryTime={false} + isFlagged={true} + actions={{ + removePost: emptyFunction, + addReaction: emptyFunction + }} + /> + ); + expect(wrapper).toMatchSnapshot(); + }); +});
\ No newline at end of file |