From 34b58779e8ffd9c845d59d23984f4275c5f0e630 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 30 Oct 2017 07:04:39 -0300 Subject: [PATCH 1/6] User PENDING status should not be able to post --- client/coral-embed-stream/src/components/Stream.js | 4 +++- client/coral-embed-stream/src/components/SuspendAccount.css | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/client/coral-embed-stream/src/components/Stream.js b/client/coral-embed-stream/src/components/Stream.js index 96101c1e5..7ff48106b 100644 --- a/client/coral-embed-stream/src/components/Stream.js +++ b/client/coral-embed-stream/src/components/Stream.js @@ -213,12 +213,14 @@ class Stream extends React.Component { const open = !asset.isClosed; const banned = user && user.status === 'BANNED'; + const pending = user && user.status === 'PENDING'; + const temporarilySuspended = user && user.suspension.until && new Date(user.suspension.until) > new Date(); - const showCommentBox = loggedIn && ((!banned && !temporarilySuspended && !highlightedComment) || keepCommentBox); + const showCommentBox = loggedIn && ((!banned && !pending & !temporarilySuspended && !highlightedComment) || keepCommentBox); const slotProps = {data}; const slotQueryData = {root, asset}; diff --git a/client/coral-embed-stream/src/components/SuspendAccount.css b/client/coral-embed-stream/src/components/SuspendAccount.css index f491ea889..539df0812 100644 --- a/client/coral-embed-stream/src/components/SuspendAccount.css +++ b/client/coral-embed-stream/src/components/SuspendAccount.css @@ -1,6 +1,10 @@ .editNameInput { margin-top: 10px; margin-bottom: 10px; + padding: 10px; + border-radius: 3px; + border: solid 1px #d8d8d8; + font-size: 0.9em; } .alert { From a6a903c459291fbe04647c11f54ca2eee218a419 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 30 Oct 2017 07:52:08 -0300 Subject: [PATCH 2/6] e2e tests --- test/e2e/page_objects/adminCommunity.js | 14 +++++++ test/e2e/page_objects/embedStream.js | 11 +++++ test/e2e/specs/04_userStatus.js | 56 +++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 test/e2e/page_objects/adminCommunity.js create mode 100644 test/e2e/specs/04_userStatus.js diff --git a/test/e2e/page_objects/adminCommunity.js b/test/e2e/page_objects/adminCommunity.js new file mode 100644 index 000000000..6eca507a6 --- /dev/null +++ b/test/e2e/page_objects/adminCommunity.js @@ -0,0 +1,14 @@ +module.exports = { + commands: [{ + url: function() { + return `${this.api.launchUrl}/admin/community`; + }, + ready() { + return this + .waitForElementVisible('body'); + }, + }], + elements: { + container: '.talk-admin-community', + } +}; diff --git a/test/e2e/page_objects/embedStream.js b/test/e2e/page_objects/embedStream.js index 76065ba5e..dd90f66b0 100644 --- a/test/e2e/page_objects/embedStream.js +++ b/test/e2e/page_objects/embedStream.js @@ -41,10 +41,21 @@ module.exports = { signInButton: '#coralSignInButton', commentBoxTextarea: '#commentText', commentBoxPostButton: '.talk-plugin-commentbox-button', + firstComment: '.talk-stream-comment.talk-stream-comment-level-0', firstCommentContent: '.talk-stream-comment.talk-stream-comment-level-0 .talk-stream-comment-content', + flagButton: '.talk-stream-comment.talk-stream-comment-level-0 .talk-plugin-flags-button', respectButton: '.talk-stream-comment.talk-stream-comment-level-0 .talk-stream-comment-footer .talk-plugin-respect-button' }, sections: { + flag: { + selector: '.talk-plugin-flags-popup', + elements: { + offensiveUsernameRadio: '.talk-plugin-flags-popup-radio#USERNAME_OFFENSIVE', + flagUsernameRadio: '.talk-plugin-flags-popup-radio#USERS', + continueButton: '.talk-plugin-flags-popup-button', + popUpText: '.talk-plugin-flags-popup-text' + } + }, profile: { selector: '.talk-embed-stream-profile-tab-pane', elements: { diff --git a/test/e2e/specs/04_userStatus.js b/test/e2e/specs/04_userStatus.js new file mode 100644 index 000000000..f3eaee0c6 --- /dev/null +++ b/test/e2e/specs/04_userStatus.js @@ -0,0 +1,56 @@ +module.exports = { + 'admin logs in': (client) => { + const adminPage = client.page.admin(); + const {testData: {admin}} = client.globals; + + adminPage + .navigate() + .waitForElementVisible('@loginLayout') + .waitForElementVisible('@signInForm') + .setValue('@emailInput', admin.email) + .setValue('@passwordInput', admin.password) + .waitForElementVisible('@signInButton') + .click('@signInButton'); + + client.pause(3000); + + adminPage + .waitForElementVisible('@moderationContainer'); + }, + 'admin flags user\'s username as offensive': (client) => { + const embedStream = client.page.embedStream(); + const flagSection = client.page.embedStream().section.embed.section.flag; + + const embed = embedStream + .navigate() + .getEmbedSection(); + + embed + .waitForElementVisible('@firstComment') + .waitForElementVisible('@flagButton') + .click('@flagButton'); + + flagSection + .waitForElementVisible('@flagUsernameRadio') + .click('@flagUsernameRadio') + .waitForElementVisible('@continueButton') + .click('@continueButton') + .waitForElementVisible('@offensiveUsernameRadio') + .click('@offensiveUsernameRadio') + .click('@continueButton') + .waitForElementVisible('@popUpText') + .click('@continueButton'); + }, + 'admin goes to Reported Usernames': (client) => { + const community = client.page.adminCommunity(); + + community + .navigate(); + + community + .waitForElementVisible('@container'); + }, + after: (client) => { + client.end(); + } +}; From b6786f614e9b14715a9c4513ad7c9647c7c8adf1 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 30 Oct 2017 07:56:51 -0300 Subject: [PATCH 3/6] Adding missing props --- .../routes/Community/components/FlaggedAccounts.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/client/coral-admin/src/routes/Community/components/FlaggedAccounts.js b/client/coral-admin/src/routes/Community/components/FlaggedAccounts.js index e617def53..1559b0507 100644 --- a/client/coral-admin/src/routes/Community/components/FlaggedAccounts.js +++ b/client/coral-admin/src/routes/Community/components/FlaggedAccounts.js @@ -1,5 +1,5 @@ import React from 'react'; - +import PropTypes from 'prop-types'; import t from 'coral-framework/services/i18n'; import EmptyCard from 'coral-admin/src/components/EmptyCard'; import LoadMore from '../../../components/LoadMore'; @@ -70,4 +70,15 @@ class FlaggedAccounts extends React.Component { } } +FlaggedAccounts.propTypes = { + users: PropTypes.object, + loadMore: PropTypes.func, + showBanUserDialog: PropTypes.func, + showSuspendUserDialog: PropTypes.func, + showRejectUsernameDialog: PropTypes.func, + approveUser: PropTypes.func, + me: PropTypes.object, + viewUserDetail: PropTypes.func, +}; + export default FlaggedAccounts; From 6d7afc7bbc90130363e6a999260e2ffab13593af Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 30 Oct 2017 08:07:03 -0300 Subject: [PATCH 4/6] Adding missing classes and props --- .../src/components/ApproveButton.js | 5 +-- .../src/components/RejectButton.js | 5 +-- .../Community/components/FlaggedAccounts.js | 3 +- .../Community/components/FlaggedUser.js | 32 ++++++++++++------- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/client/coral-admin/src/components/ApproveButton.js b/client/coral-admin/src/components/ApproveButton.js index 151a5ca29..8ab455510 100644 --- a/client/coral-admin/src/components/ApproveButton.js +++ b/client/coral-admin/src/components/ApproveButton.js @@ -7,11 +7,11 @@ import {Icon} from 'coral-ui'; import t from 'coral-framework/services/i18n'; -const ApproveButton = ({active, minimal, onClick}) => { +const ApproveButton = ({active, minimal, onClick, className}) => { const text = active ? t('modqueue.approved') : t('modqueue.approve'); return (