From e1ed22af6ee4c3f33220aa8d2a5bd798f95ffb16 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Wed, 21 Dec 2016 11:19:41 -0200 Subject: [PATCH] Base For Admin Tests --- tests/pageobjects/administration.page.js | 12 +++++++++ tests/pageobjects/side-nav.page.js | 2 +- tests/steps/04-main-elements-render.js | 2 +- tests/steps/11-admin.js | 30 ++++++++++++++++++++++ tests/test-data/checks.js | 32 ++++++++++++++++++++++++ 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 tests/pageobjects/administration.page.js create mode 100644 tests/steps/11-admin.js diff --git a/tests/pageobjects/administration.page.js b/tests/pageobjects/administration.page.js new file mode 100644 index 00000000000..249d3cf5528 --- /dev/null +++ b/tests/pageobjects/administration.page.js @@ -0,0 +1,12 @@ +import Page from './Page'; + +class Administration extends Page { + get flexNav() { return browser.element('.flex-nav'); } + get flexNavContent() { return browser.element('.flex-nav .content'); } + get layoutLink() { return browser.element('.flex-nav .content [href="/admin/Layout"]'); } + get customScriptBtn() { return browser.element('.section:nth-of-type(6) .expand'); } + get customScriptLoggedOutTextArea() { return browser.element('.section:nth-of-type(6) .CodeMirror-scroll'); } + get customScriptLoggedInTextArea() { return browser.element('.CodeMirror.cm-s-default:nth-of-type(2)'); } +} + +module.exports = new Administration(); diff --git a/tests/pageobjects/side-nav.page.js b/tests/pageobjects/side-nav.page.js index 7fed233724e..1b25196f107 100644 --- a/tests/pageobjects/side-nav.page.js +++ b/tests/pageobjects/side-nav.page.js @@ -31,9 +31,9 @@ class SideNav extends Page { get statusBusy() { return browser.element('.busy'); } get statusOffline() { return browser.element('.offline'); } get account() { return browser.element('#account'); } + get admin() { return browser.element('#admin'); } get logout() { return browser.element('#logout'); } get sideNavBar() { return browser.element('.side-nav '); } - get sideNavBtn() { return browser.element('.fixed-title .burger'); } get preferences() { return browser.element('.account-link:nth-of-type(1)'); } get profile() { return browser.element('.account-link:nth-of-type(2)'); } diff --git a/tests/steps/04-main-elements-render.js b/tests/steps/04-main-elements-render.js index fc409fe1870..9e372a6c8c5 100644 --- a/tests/steps/04-main-elements-render.js +++ b/tests/steps/04-main-elements-render.js @@ -8,7 +8,7 @@ import sideNav from '../pageobjects/side-nav.page'; //test data imports import {checkIfUserIsValid} from '../test-data/checks'; import {username, email, password} from '../test-data/user.js'; -//Basic usage test start + describe('Main Elements Render', function() { before(()=>{ checkIfUserIsValid(username, email, password); diff --git a/tests/steps/11-admin.js b/tests/steps/11-admin.js new file mode 100644 index 00000000000..b717f991ae7 --- /dev/null +++ b/tests/steps/11-admin.js @@ -0,0 +1,30 @@ +/* eslint-env mocha */ +/* eslint-disable func-names, prefer-arrow-callback */ + +import sideNav from '../pageobjects/side-nav.page'; +import admin from '../pageobjects/administration.page'; + +//test data imports +import {checkIfUserIsAdmin} from '../test-data/checks'; +import {adminUsername, adminEmail, adminPassword} from '../test-data/user.js'; + +describe.only('Admin Login', () => { + before(() => { + checkIfUserIsAdmin(adminUsername, adminEmail, adminPassword); + sideNav.getChannelFromList('general').waitForExist(5000); + sideNav.openChannel('general'); + }); + + describe('Enter the admin view', () => { + before(() => { + sideNav.accountBoxUserName.click(); + sideNav.admin.waitForVisible(5000); + + }); + + it('Enter the admin view', () => { + sideNav.admin.click(); + admin.flexNavContent.waitForVisible(5000); + }); + }); +}); diff --git a/tests/test-data/checks.js b/tests/test-data/checks.js index 7a0ee565229..6bf06ce8828 100644 --- a/tests/test-data/checks.js +++ b/tests/test-data/checks.js @@ -49,3 +49,35 @@ export function checkIfUserIsValid(username, email, password) { console.log(' User already logged'); } } + +export function checkIfUserIsAdmin(username, email, password) { + if (!sideNav.accountBoxUserName.isVisible()) { + //if the user is not logged in. + console.log(' User not logged. logging in...'); + loginPage.open(); + loginPage.login({email, password}); + try { + mainContent.mainContent.waitForExist(5000); + } catch (e) { + //if the user dont exist. + console.log(' Admin User dont exist. Creating user...'); + loginPage.gotToRegister(); + loginPage.registerNewUser({username, email, password}); + browser.waitForExist('form#login-card input#username', 5000); + browser.click('.submit > button'); + mainContent.mainContent.waitForExist(5000); + } + } else if (!sideNav.accountBoxUserName.getText() === username) { + //if the logged user is not the right one + console.log(' Wrong logged user. Changing user...'); + sideNav.accountBoxUserName.waitForVisible(5000); + sideNav.accountBoxUserName.click(); + sideNav.logout.waitForVisible(5000); + sideNav.logout.click(); + + loginPage.open(); + loginPage.login({email, password}); + } else { + console.log(' User already logged'); + } +}