package net.rrm.ehour.it.driver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import static net.rrm.ehour.it.AbstractScenario.BASE_URL;
import static net.rrm.ehour.it.AbstractScenario.Driver;
import static net.rrm.ehour.it.driver.ItUtil.findElement;
import static net.rrm.ehour.it.driver.ItUtil.waitForValue;
import static org.junit.Assert.assertEquals;
public abstract class UserManagementDriver {
public static final ItUser REGULAR_USER = new ItUser("thies", "a");
public static final ItUser REPORTING_USER = new ItUser("report", "a");
public static ItUser createRegularUser() {
createUser(REGULAR_USER, "Edeling", "User");
assertUserDataSaved();
return REGULAR_USER;
}
public static ItUser createReportUser() {
createUser(REPORTING_USER, "Report", "Reporting");
assertUserDataSaved();
return REPORTING_USER;
}
public static void createUser(ItUser user, String lastName, String role) {
loadUserManagement();
fillUserForm(user, lastName, role);
submitUserForm();
}
public static void submitUserForm() {
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_submitButton").click();
}
public static void fillUserForm(ItUser user, String lastName, String role) {
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.username").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.username").sendKeys(user.name);
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.firstName").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.firstName").sendKeys("Thies");
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.lastName").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.lastName").sendKeys(lastName);
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.email").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.email").sendKeys("thies@te-con.nl");
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_password").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_password").sendKeys(user.password);
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_confirmPassword").clear();
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_confirmPassword").sendKeys(user.password);
new Select(findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_dept_user.userDepartment")).selectByVisibleText("Internal");
new Select(findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.userRoles")).selectByVisibleText(role);
}
public static void editUser(String name) {
WebElement listFilter = findElement(By.id("listFilter"));
listFilter.clear();
listFilter.sendKeys(name);
findElement("userSelection_border_border__body_entrySelectorFrame_entrySelectorFrame_blueBorder_blueBorder__body_listScroll_itemList_1").click();
}
public static void loadUserManagement() {
Driver.get(BASE_URL + "/eh/admin/employee");
}
public static java.util.List<WebElement> getUserRoles() {
Select userRoles = new Select(findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user.userRoles"));
return userRoles.getOptions();
}
public static void showOnlyActiveUsers() {
findElement("userSelection_border_border__body_entrySelectorFrame_entrySelectorFrame_filterForm_filterToggle").click();
}
public static void assertUserDataSaved() {
assertUserServerMessage("Data saved");
}
public static void assertUserServerMessage(String expected) {
assertEquals(expected, findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_serverMessage").getText());
}
public static void setFormFieldTo(String field, String value) {
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_user." + field).sendKeys(value);
}
public static void waitForUsernameToBe(String username) {
waitForValue("tabs_panel_border_greySquaredFrame_border__body_userForm_user.username", username);
}
public static void tickShowAssignments() {
findElement("tabs_panel_border_greySquaredFrame_border__body_userForm_showAssignments").click();
}
public static class ItUser {
public String name;
public String password;
public ItUser(String name, String password) {
this.name = name;
this.password = password;
}
}
}