package org.syftkog.web.test.framework;
import java.util.ArrayList;
import java.util.HashMap;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
/**
*
* @author BenjaminLimb
*/
public class TestCaseParameters implements TagContext {
private HashMap<String, Object> params;
/**
*
*/
public TestCaseParameters() {
params = new HashMap<>();
// Default parameters
setBrowserVersionPlatform(BrowserVersionPlatform.WIN7FF);
}
/**
*
* @param name
* @param value
*/
public void setParameter(String name, Object value) {
params.put(name, value);
}
/**
*
* @param name
* @return
*/
public Object getParameter(String name) {
return params.get(name);
}
/**
*
* @param bvp
*/
public TestCaseParameters(BrowserVersionPlatform bvp) {
params.put("browserName", bvp.getBrowserName());
params.put("browserVersion", bvp.getBrowserVersion());
params.put("platform", bvp.getPlatform());
}
/**
*
* @param bvp
* @return
*/
public TestCaseParameters setBrowserVersionPlatform(BrowserVersionPlatform bvp) {
setParameter("browserName", bvp.getBrowserName());
setParameter("browserVersion", bvp.getBrowserVersion());
setParameter("platform", bvp.getPlatform());
return this;
}
/**
*
* @return
*/
public DesiredCapabilities toDesiredCapabilities() {
Assert.assertNotNull(getParameter("browserName"), "Browser name must be specified.");
if (getParameter("browserName") != "mock") {
Assert.assertNotNull(getParameter("browserVersion"), "Browser version must be specified");
Assert.assertNotNull(getParameter("platform"), "Platform must be specified.");
}
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("browserName", getParameter("browserName"));
caps.setCapability("version", getParameter("browserVersion"));
caps.setCapability("platform", getParameter("platform"));
return caps;
}
/**
*
* @return
*/
public Dimension getWindowSize() {
return (Dimension) getParameter("windowSize");
}
/**
*
* @param windowSize
* @return
*/
public TestCaseParameters setWindowSize(Dimension windowSize) {
setParameter("windowSize", windowSize);
return this;
}
/**
*
* @return
*/
public String getBrowserName() {
return (String) getParameter("browserName");
}
/**
*
* @param browserName
* @return
*/
public TestCaseParameters setBrowserName(String browserName) {
setParameter("browserName", browserName);
return this;
}
/**
*
* @return
*/
public String getExperiments() {
return (String) getParameter("experiments");
}
/**
*
* @param experiments
* @return
*/
public TestCaseParameters setExperiments(String experiments) {
setParameter("experiments", experiments);
return this;
}
/**
*
* @return
*/
public String getBrowserVersion() {
return (String) getParameter("browserVersion");
}
/**
*
* @param browserVersion
* @return
*/
public TestCaseParameters setBrowserVersion(String browserVersion) {
setParameter("browserVersion", browserVersion);
return this;
}
/**
*
* @return
*/
public String getPlatform() {
return getParameter("platform").toString();
}
/**
*
* @param platform
* @return
*/
public TestCaseParameters setPlatform(String platform) {
setParameter("platform", platform);
return this;
}
/**
*
* @return
*/
public Integer getMaxAttempts() {
if (getParameter("maxAttempts") != null) {
return (Integer) getParameter("maxAttempts");
}
return null;
}
/**
*
* @param maxAttempts
* @return
*/
public TestCaseParameters setMaxAttempts(Integer maxAttempts) {
setParameter("maxAttempts", maxAttempts);
return this;
}
/**
*
* @param environment
* @return
*/
public TestCaseParameters setEnvironment(Environment environment) {
setParameter("environment", environment);
return this;
}
/**
*
* @return
*/
public Environment getEnvironment() {
return (Environment) getParameter("environment");
}
/**
*
* @param authentication
* @return
*/
public TestCaseParameters setAuthentication(Authentication authentication) {
setParameter("authentication", authentication);
return this;
}
/**
*
* @return
*/
public Authentication getAuthentication() {
return (Authentication) getParameter("authentication");
}
/**
*
* @param authenticate
* @return
*/
public TestCaseParameters setAuthenticate(Boolean authenticate) {
setParameter("authenticate", authenticate);
return this;
}
/**
*
* @return
*/
public Boolean getAuthenticate() {
return (Boolean) getParameter("authenticate");
}
/**
*
* @param language
* @return
*/
public TestCaseParameters setLanguage(Language language) {
setParameter("language", language);
return this;
}
/**
*
* @return
*/
public Language getLanguage() {
return (Language) getParameter("language");
}
/**
*
* @return
*/
@Override
public ArrayList<String> getTags() {
ArrayList<String> tags = new ArrayList<>();
if (getBrowserName() != null && !getBrowserName().equalsIgnoreCase("any")) {
tags.add(getBrowserName());
}
if (getBrowserVersion() != null && !getBrowserVersion().equalsIgnoreCase("any")) {
tags.add(getBrowserVersion());
}
if (getPlatform() != null && !getPlatform().equalsIgnoreCase("any")) {
tags.add(getPlatform());
}
return tags;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (getBrowserName() != null && !getBrowserName().equalsIgnoreCase("any")) {
sb.append(" ").append(getBrowserName());
}
if (getBrowserVersion() != null && !getBrowserVersion().equalsIgnoreCase("any")) {
sb.append(" ").append(getBrowserVersion());
}
if (getPlatform() != null && !getPlatform().equalsIgnoreCase("any")) {
sb.append(" ").append(getPlatform());
}
return sb.toString();
}
/**
*
* @param tag
*/
@Override
public void addTag(String tag) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}