Take karma into account when doing e2e

This commit is contained in:
Chi Vinh Le
2018-05-25 22:49:35 +02:00
parent 79a0f0321f
commit 90e4682cf6
9 changed files with 98 additions and 23 deletions
@@ -14,7 +14,8 @@ const ApproveButton = ({ active, minimal, onClick, className, disabled }) => {
className={cn(
styles.root,
{ [styles.minimal]: minimal, [styles.active]: active },
className
className,
'talk-admin-approve-button'
)}
onClick={onClick}
disabled={disabled || active}
@@ -14,7 +14,8 @@ const RejectButton = ({ active, minimal, onClick, className, disabled }) => {
className={cn(
styles.root,
{ [styles.minimal]: minimal, [styles.active]: active },
className
className,
'talk-admin-reject-button'
)}
onClick={onClick}
disabled={disabled || active}
@@ -24,6 +24,7 @@ const ModerationMenu = ({ asset = {}, items, getModPath, activeTab }) => {
>
{items.map(queue => (
<Link
id={`talk-admin-moderate-tab-${queue.key}`}
key={queue.key}
to={getModPath(queue.key, asset.id)}
className={cn('mdl-tabs__tab', styles.tab, {
@@ -15,6 +15,7 @@ import {
} from 'react-virtualized';
import throttle from 'lodash/throttle';
import key from 'keymaster';
import cn from 'classnames';
const hasComment = (nodes, id) => nodes.some(node => node.id === id);
@@ -380,6 +381,11 @@ class ModerationQueue extends React.Component {
...props
} = this.props;
const rootClassName = cn(
styles.root,
`talk-admin-moderate-queue-${this.props.activeTab}`
);
if (comments.length === 0) {
return (
<div className={styles.root}>
@@ -401,7 +407,7 @@ class ModerationQueue extends React.Component {
const comment = comments[index];
return (
<div className={styles.root}>
<div className={rootClassName}>
<Comment
root={this.props.root}
key={comment.id}
@@ -423,7 +429,7 @@ class ModerationQueue extends React.Component {
const view = this.state.view;
return (
<div className={styles.root}>
<div className={rootClassName}>
<ViewMore
viewMore={() => this.viewNewComments()}
count={comments.length - view.length}
-3
View File
@@ -23,9 +23,6 @@ module.exports = {
username: 'user',
password: 'testtest',
},
comment: {
body: 'This is a test comment',
},
organizationName: 'Coral',
organizationContactEmail: 'coral@coralproject.net',
},
+21 -2
View File
@@ -70,9 +70,28 @@ module.exports = {
},
moderate: {
selector: '.talk-admin-moderation-container',
commands: [
{
url: function() {
return `${this.api.launchUrl}/admin/moderate`;
},
ready() {
return this.waitForElementVisible('body');
},
goToQueue(queue) {
this.click(`#talk-admin-moderate-tab-${queue}`).expect.section(
`.talk-admin-moderate-queue-${queue}`
).to.be.visible;
return this;
},
},
],
elements: {
comment: '.talk-admin-moderate-comment',
commentUsername: '.talk-admin-moderate-comment-username',
firstComment: '.talk-admin-moderate-comment',
firstCommentUsername: '.talk-admin-moderate-comment-username',
firstCommentContent: '.talk-admin-comment',
firstCommentApprove: '.talk-admin-approve-button',
firstCommentReject: '.talk-admin-reject-button',
},
},
stories: {
+5 -5
View File
@@ -1,3 +1,5 @@
const commentBody = 'Embed Stream Test';
module.exports = {
'@tags': ['embedStream', 'login'],
@@ -40,28 +42,26 @@ module.exports = {
},
'user posts a comment': client => {
const comments = client.page.embedStream().section.comments;
const { testData: { comment } } = client.globals;
comments
.waitForElementVisible('@commentBoxTextarea')
.setValue('@commentBoxTextarea', comment.body)
.setValue('@commentBoxTextarea', commentBody)
.waitForElementVisible('@commentBoxPostButton')
.click('@commentBoxPostButton')
.waitForElementVisible('@firstCommentContent')
.getText('@firstCommentContent', result => {
comments.assert.equal(result.value, comment.body);
comments.assert.equal(result.value, commentBody);
});
},
'signed in user sees comment history': client => {
const profile = client.page.embedStream().goToProfileSection();
const { testData: { comment } } = client.globals;
profile
.waitForElementVisible('@myCommentHistory')
.waitForElementVisible('@myCommentHistoryComment')
.getText('@myCommentHistoryComment', result => {
profile.assert.equal(result.value, comment.body);
profile.assert.equal(result.value, commentBody);
});
},
'user sees replies and reactions to comments': client => {
+49
View File
@@ -1,3 +1,5 @@
const commentBody = 'Ban User Test';
module.exports = {
before: client => {
client.setWindowPosition(0, 0);
@@ -109,4 +111,51 @@ module.exports = {
.waitForElementVisible('@commentBoxTextarea')
.waitForElementVisible('@commentBoxPostButton');
},
'user posts comment, karma should stop it from happening': client => {
const comments = client.page.embedStream().section.comments;
comments
.waitForElementVisible('@commentBoxTextarea')
.setValue('@commentBoxTextarea', commentBody)
.waitForElementVisible('@commentBoxPostButton')
.click('@commentBoxPostButton');
client.pause(2000);
comments.waitForElementNotPresent('@firstCommentContent');
},
'user logs out 3': client => {
const embedStream = client.page.embedStream();
const comments = embedStream.section.comments;
comments.logout();
},
'admin logs in (3)': client => {
const adminPage = client.page.admin();
const { testData: { admin } } = client.globals;
adminPage.navigateAndLogin(admin);
},
'admin goes to moderation queue reported': client => {
const adminPage = client.page.admin();
adminPage.goToModerate().goToQueue('reported');
},
'comment should be in reported queue': client => {
const moderate = client.page.admin().section.moderate;
moderate
.waitForElementVisible('@firstComment')
.getText('@firstCommentContent', result => {
moderate.assert.equal(result.value, commentBody);
});
},
'approve comment to restore karma': client => {
const moderate = client.page.admin().section.moderate;
moderate.click('@firstCommentApprove');
// TODO: check why this fails.
// .waitForElementNotPresent('@firstComment');
},
};
+10 -9
View File
@@ -1,3 +1,5 @@
const commentBody = 'Suspend User Test';
module.exports = {
before: client => {
client.setWindowPosition(0, 0);
@@ -25,16 +27,15 @@ module.exports = {
},
'user posts comment': client => {
const comments = client.page.embedStream().section.comments;
const { testData: { comment } } = client.globals;
comments
.waitForElementVisible('@commentBoxTextarea')
.setValue('@commentBoxTextarea', comment.body)
.setValue('@commentBoxTextarea', commentBody)
.waitForElementVisible('@commentBoxPostButton')
.click('@commentBoxPostButton')
.waitForElementVisible('@firstCommentContent')
.getText('@firstCommentContent', result => {
comments.assert.equal(result.value, comment.body);
comments.assert.equal(result.value, commentBody);
});
},
'user logs out': client => {
@@ -84,9 +85,9 @@ module.exports = {
.goToModerate();
moderate
.waitForElementVisible('@comment')
.waitForElementVisible('@commentUsername')
.click('@commentUsername');
.waitForElementVisible('@firstComment')
.waitForElementVisible('@firstCommentUsername')
.click('@firstCommentUsername');
userDetailDrawer
.waitForElementVisible('@actionsMenu')
@@ -112,9 +113,9 @@ module.exports = {
const { moderate, userDetailDrawer } = adminPage.section;
moderate
.waitForElementVisible('@comment')
.waitForElementVisible('@commentUsername')
.click('@commentUsername');
.waitForElementVisible('@firstComment')
.waitForElementVisible('@firstCommentUsername')
.click('@firstCommentUsername');
userDetailDrawer
.waitForElementVisible('@tabBar')