From 9c7d87634144b3214f62ebc387b7ff612af5be5a Mon Sep 17 00:00:00 2001 From: addshore Date: Sat, 13 Jan 2018 13:52:35 +0000 Subject: [PATCH] selenium, add restoration test to page spec Change-Id: Ied06915f982e693b00edab14b8c29c978a5d6dff --- tests/selenium/pageobjects/delete.page.js | 30 ++++++++++++++++++++++ tests/selenium/pageobjects/restore.page.js | 21 +++++++++++++++ tests/selenium/specs/page.js | 24 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 tests/selenium/pageobjects/restore.page.js diff --git a/tests/selenium/pageobjects/delete.page.js b/tests/selenium/pageobjects/delete.page.js index bb095bb3d1..bd28ca8cef 100644 --- a/tests/selenium/pageobjects/delete.page.js +++ b/tests/selenium/pageobjects/delete.page.js @@ -18,5 +18,35 @@ class DeletePage extends Page { this.submit.click(); } + apiDelete( name, reason ) { + const url = require( 'url' ), // https://nodejs.org/docs/latest/api/url.html + baseUrl = url.parse( browser.options.baseUrl ), // http://webdriver.io/guide/testrunner/browserobject.html + Bot = require( 'nodemw' ), // https://github.com/macbre/nodemw + client = new Bot( { + protocol: baseUrl.protocol, + server: baseUrl.hostname, + port: baseUrl.port, + path: baseUrl.path, + username: browser.options.username, + password: browser.options.password, + debug: false + } ); + + return new Promise( ( resolve, reject ) => { + client.logIn( function ( err ) { + if ( err ) { + console.log( err ); + return reject( err ); + } + client.delete( name, reason, function ( err ) { + if ( err ) { + return reject( err ); + } + resolve(); + } ); + } ); + } ); + } + } module.exports = new DeletePage(); diff --git a/tests/selenium/pageobjects/restore.page.js b/tests/selenium/pageobjects/restore.page.js new file mode 100644 index 0000000000..ef47438e7f --- /dev/null +++ b/tests/selenium/pageobjects/restore.page.js @@ -0,0 +1,21 @@ +'use strict'; +const Page = require( './page' ); + +class RestorePage extends Page { + + get reason() { return browser.element( '#wpComment' ); } + get submit() { return browser.element( '#mw-undelete-submit' ); } + get displayedContent() { return browser.element( '#mw-content-text' ); } + + open( name ) { + browser.url( '/index.php?title=Special:Undelete/' + name ); + } + + restore( name, reason ) { + this.open( name ); + this.reason.setValue( reason ); + this.submit.click(); + } + +} +module.exports = new RestorePage(); diff --git a/tests/selenium/specs/page.js b/tests/selenium/specs/page.js index 4ec94eb38f..130d6afb3a 100644 --- a/tests/selenium/specs/page.js +++ b/tests/selenium/specs/page.js @@ -1,6 +1,7 @@ 'use strict'; const assert = require( 'assert' ), DeletePage = require( '../pageobjects/delete.page' ), + RestorePage = require( '../pageobjects/restore.page' ), EditPage = require( '../pageobjects/edit.page' ), HistoryPage = require( '../pageobjects/history.page' ), UserLoginPage = require( '../pageobjects/userlogin.page' ); @@ -87,4 +88,27 @@ describe( 'Page', function () { } ); + it( 'should be restorable', function () { + + // login + UserLoginPage.loginAdmin(); + + // create + browser.call( function () { + return EditPage.apiEdit( name, content ); + } ); + + // delete + browser.call( function () { + return DeletePage.apiDelete( name, content + '-deletereason' ); + } ); + + // restore + RestorePage.restore( name, content + '-restorereason' ); + + // check + assert.equal( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' ); + + } ); + } ); -- 2.20.1