forked from openshift/origin-web-console
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject.js
74 lines (67 loc) · 2.51 KB
/
project.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'use strict';
const h = require('../helpers.js');
// TODO: factor this out into a proper page object
exports.visitCreatePage = () => {
h.goToPage('create-project');
};
exports.projectDetails = () => {
let timestamp = (new Date()).getTime();
let project = {
name: 'console-test-project-' + timestamp,
displayName: 'Console integration test Project ' + timestamp,
description: 'Created by integration tests'
};
return project;
};
exports.createProject = (project, uri) => {
for (let key in project) {
h.setInputValue(key, project[key]);
}
h.clickAndGo('Create', uri);
};
exports.deleteProject = (project) => {
h.goToPage('/');
let projectTile = element(by.cssContainingText(".project-info", project['name']));
projectTile.element(by.css('.fa-trash-o')).click();
h.setInputValue('confirmName', project.name);
let deleteButton = element(by.cssContainingText(".modal-dialog .btn", "Delete"));
browser.wait(protractor.ExpectedConditions.elementToBeClickable(deleteButton), 2000);
deleteButton.click();
h.waitForPresence(".alert-success", "marked for deletion");
};
// All projects visible to the current user.
// This function will click the 'delete' on every project that appears on the project list page.
// Be careful about using this function if your test gives the e2e-user access
// to internal projects such as openshift, or openshift-infra
exports.deleteAllProjects = () => {
h.goToPage('/');
let projectTiles = element.all(by.css(".project-info"));
let allDeleted = protractor.promise.defer();
let numDeleted = 0;
let count;
projectTiles.count().then((num) => {
count = num;
// safely fulfill if there happen to be no projects.
if(count === 0) {
allDeleted.fulfill();
}
});
projectTiles.each((elem) => {
let projectTitle = elem.element(by.css('.tile-target span')).getText();
// click trash first
elem.element(by.css('.fa-trash-o')).click();
h.setInputValue('confirmName', projectTitle);
// then click delete
let modal = element(by.css('.modal-dialog'));
let deleteButton = modal.element(by.cssContainingText(".modal-dialog .btn", "Delete"));
browser.wait(protractor.ExpectedConditions.elementToBeClickable(deleteButton), 2000);
deleteButton.click();
h.waitForElem(element(by.cssContainingText(".alert-success", "marked for deletion")));
h.waitForElemRemoval(element(by.css('.modal-dialog')));
numDeleted++;
if(numDeleted >= count) {
allDeleted.fulfill(numDeleted);
}
});
return allDeleted.promise;
};