Files
talk/test/e2e/specs/05_banUser.js
T
2018-06-05 04:28:54 +02:00

173 lines
4.8 KiB
JavaScript

const printBrowserLog = require('../helpers/printBrowserLog');
const commentBody = 'Ban User Test';
module.exports = {
before: client => {
client.setWindowPosition(0, 0);
client.resizeWindow(1600, 1200);
},
afterEach: async (client, done) => {
await printBrowserLog(client);
if (client.currentTest.results.failed) {
throw new Error('Test Case failed, skipping all the rest');
}
done();
},
after: client => {
client.end();
},
'admin logs in': client => {
const adminPage = client.page.admin();
const {
testData: { admin },
} = client.globals;
adminPage.navigateAndLogin(admin);
},
'navigate to the embed stream': client => {
const embedStream = client.page.embedStream();
embedStream.navigate().ready();
},
'admin bans user': client => {
const embedStream = client.page.embedStream();
const comments = embedStream.section.comments;
comments.section.mod
.waitForElementVisible('@arrow')
.click('@arrow')
.waitForElementVisible('@menu')
.waitForElementVisible('@banButton')
.click('@banButton');
embedStream
.waitForElementVisible('@banDialog')
.waitForElementVisible('@banDialogConfirmButton')
.click('@banDialogConfirmButton')
.waitForElementNotVisible('@banDialog');
},
'admin logs out': client => {
const comments = client.page.embedStream().section.comments;
comments.logout();
},
'user logs in': client => {
const {
testData: { user },
} = client.globals;
const comments = client.page.embedStream().section.comments;
comments.openLoginPopup(popup => popup.login(user));
},
'user account is banned, should see restricted message box': client => {
const embedStream = client.page.embedStream();
const comments = embedStream.section.comments;
comments.waitForElementVisible('@restrictedMessageBox');
},
'user logs out': client => {
const embedStream = client.page.embedStream();
const comments = embedStream.section.comments;
comments.logout();
},
'admin logs in (2)': client => {
const adminPage = client.page.admin();
const {
testData: { admin },
} = client.globals;
adminPage.navigateAndLogin(admin);
},
'admin goes to community': client => {
const adminPage = client.page.admin();
adminPage.goToCommunity().goToPeople();
},
'admin removes ban from user': client => {
const people = client.page.admin().section.community.section.people;
people
.waitForElementVisible('@firstRow')
.waitForElementVisible('@dropdownStatus')
.click('@dropdownStatus')
.waitForElementVisible('@optionRemoveBan')
.click('@optionRemoveBan');
},
'admin logs out 2': client => {
client.page.admin().logout();
},
'navigate to the embed stream 2': client => {
const embedStream = client.page.embedStream();
embedStream.navigate().ready();
},
'user logs in 2': client => {
const {
testData: { user },
} = client.globals;
const comments = client.page.embedStream().section.comments;
comments.openLoginPopup(popup => popup.login(user));
},
'user should be able to comment': client => {
const embedStream = client.page.embedStream();
const comments = embedStream.section.comments;
comments
.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')
.waitForElementNotPresent('@firstComment');
},
};