selenium: add re-creatable page test to page spec
[lhc/web/wiklou.git] / tests / selenium / specs / page.js
index 06d3d60..376dce5 100644 (file)
@@ -1,5 +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' );
@@ -9,6 +11,10 @@ describe( 'Page', function () {
        var content,
                name;
 
+       function getTestString() {
+               return Math.random().toString() + '-öäü-♠♣♥♦';
+       }
+
        before( function () {
                // disable VisualEditor welcome dialog
                UserLoginPage.open();
@@ -17,8 +23,8 @@ describe( 'Page', function () {
 
        beforeEach( function () {
                browser.deleteCookie();
-               content = Math.random().toString();
-               name = Math.random().toString();
+               content = getTestString();
+               name = getTestString();
        } );
 
        it( 'should be creatable', function () {
@@ -32,9 +38,29 @@ describe( 'Page', function () {
 
        } );
 
-       it( 'should be editable', function () {
+       it( 'should be re-creatable', function () {
+               let initialContent = getTestString();
+
+               // create
+               browser.call( function () {
+                       return EditPage.apiEdit( name, initialContent );
+               } );
+
+               // delete
+               browser.call( function () {
+                       return DeletePage.apiDelete( name, 'delete prior to recreate' );
+               } );
+
+               // create
+               EditPage.edit( name, content );
 
-               var content2 = Math.random().toString();
+               // check
+               assert.equal( EditPage.heading.getText(), name );
+               assert.equal( EditPage.displayedContent.getText(), content );
+
+       } );
+
+       it( 'should be editable', function () {
 
                // create
                browser.call( function () {
@@ -42,11 +68,11 @@ describe( 'Page', function () {
                } );
 
                // edit
-               EditPage.edit( name, content2 );
+               EditPage.edit( name, content );
 
                // check
                assert.equal( EditPage.heading.getText(), name );
-               assert.equal( EditPage.displayedContent.getText(), content2 );
+               assert.equal( EditPage.displayedContent.getText(), content );
 
        } );
 
@@ -63,4 +89,48 @@ describe( 'Page', function () {
 
        } );
 
+       it( 'should be deletable', function () {
+
+               // login
+               UserLoginPage.loginAdmin();
+
+               // create
+               browser.call( function () {
+                       return EditPage.apiEdit( name, content );
+               } );
+
+               // delete
+               DeletePage.delete( name, content + '-deletereason' );
+
+               // check
+               assert.equal(
+                       DeletePage.displayedContent.getText(),
+                       '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
+               );
+
+       } );
+
+       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.' );
+
+       } );
+
 } );