135 lines
4.5 KiB
JavaScript
135 lines
4.5 KiB
JavaScript
/*
|
|
* Copyright 2015 Mirantis, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License. You may obtain
|
|
* a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
**/
|
|
|
|
define([
|
|
'intern/dojo/node!lodash',
|
|
'intern/chai!assert',
|
|
'tests/functional/helpers',
|
|
'intern/dojo/node!leadfoot/helpers/pollUntil',
|
|
'tests/functional/pages/login',
|
|
'tests/functional/pages/welcome',
|
|
'tests/functional/pages/cluster',
|
|
'tests/functional/pages/clusters'
|
|
],
|
|
function(_, assert, Helpers, pollUntil, LoginPage, WelcomePage, ClusterPage, ClustersPage) {
|
|
'use strict';
|
|
function CommonMethods(remote) {
|
|
this.remote = remote;
|
|
this.loginPage = new LoginPage(remote);
|
|
this.welcomePage = new WelcomePage(remote);
|
|
this.clusterPage = new ClusterPage(remote);
|
|
this.clustersPage = new ClustersPage(remote);
|
|
}
|
|
|
|
CommonMethods.prototype = {
|
|
constructor: CommonMethods,
|
|
pickRandomName: function(prefix) {
|
|
return _.uniqueId((prefix || 'Item') + ' #');
|
|
},
|
|
getOut: function() {
|
|
var self = this;
|
|
return this.remote
|
|
.then(function() {
|
|
return self.welcomePage.skip();
|
|
})
|
|
.then(function() {
|
|
return self.loginPage.logout();
|
|
});
|
|
},
|
|
getIn: function() {
|
|
var self = this;
|
|
return this.remote
|
|
.then(function() {
|
|
return self.loginPage.logout();
|
|
})
|
|
.then(function() {
|
|
return self.loginPage.login();
|
|
})
|
|
.waitForElementDeletion('.login-btn', 2000)
|
|
.then(function() {
|
|
return self.welcomePage.skip();
|
|
})
|
|
.waitForCssSelector('.navbar-nav', 1000)
|
|
.clickByCssSelector('.global-alert.alert-warning .close');
|
|
},
|
|
createCluster: function(clusterName, stepsMethods) {
|
|
var self = this;
|
|
return this.remote
|
|
.clickLinkByText('Environments')
|
|
.waitForCssSelector('.clusters-page', 2000)
|
|
.then(function() {
|
|
return self.clustersPage.createCluster(clusterName, stepsMethods);
|
|
});
|
|
},
|
|
removeCluster: function(clusterName, suppressErrors) {
|
|
var self = this;
|
|
return this.remote
|
|
.clickLinkByText('Environments')
|
|
.waitForCssSelector('.clusters-page', 2000)
|
|
.then(function() {
|
|
return self.clustersPage.goToEnvironment(clusterName);
|
|
})
|
|
.then(function() {
|
|
return self.clusterPage.removeCluster(clusterName);
|
|
})
|
|
.catch(function(e) {
|
|
if (!suppressErrors) throw new Error('Unable to delete cluster ' + clusterName + ': ' + e);
|
|
});
|
|
},
|
|
doesClusterExist: function(clusterName) {
|
|
var self = this;
|
|
return this.remote
|
|
.clickLinkByText('Environments')
|
|
.waitForCssSelector('.clusters-page', 2000)
|
|
.findAllByCssSelector(self.clustersPage.clusterSelector)
|
|
.then(function(divs) {
|
|
return divs.reduce(function(matchFound, element) {
|
|
return element.getVisibleText().then(
|
|
function(name) {
|
|
return (name === clusterName) || matchFound;
|
|
}
|
|
);
|
|
}, false);
|
|
});
|
|
},
|
|
addNodesToCluster: function(nodesAmount, nodesRoles, nodeStatus, nodeNameFilter) {
|
|
var self = this;
|
|
return this.remote
|
|
.then(function() {
|
|
return self.clusterPage.goToTab('Nodes');
|
|
})
|
|
.waitForCssSelector('button.btn-add-nodes', 3000)
|
|
.clickByCssSelector('button.btn-add-nodes')
|
|
.waitForCssSelector('.node', 3000)
|
|
.then(pollUntil(function() {
|
|
return window.$('.node-list-management-buttons').is(':visible') && window.$('.role-panel').is(':visible') || null;
|
|
}, 3000))
|
|
.then(function() {
|
|
if (nodeNameFilter) return self.clusterPage.searchForNode(nodeNameFilter);
|
|
})
|
|
.then(function() {
|
|
return self.clusterPage.checkNodeRoles(nodesRoles);
|
|
})
|
|
.then(function() {
|
|
return self.clusterPage.checkNodes(nodesAmount, nodeStatus);
|
|
})
|
|
.clickByCssSelector('.btn-apply')
|
|
.waitForElementDeletion('.btn-apply', 3000);
|
|
}
|
|
};
|
|
return CommonMethods;
|
|
});
|