package com.autonomy.abc.selenium.find.bi;
import com.autonomy.abc.selenium.find.Container;
import com.hp.autonomy.frontend.selenium.element.ChosenDrop;
import com.hp.autonomy.frontend.selenium.util.ElementUtil;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.util.List;
import java.util.stream.Collectors;
abstract class ParametricFieldView {
private final WebDriver driver;
private final WebElement container;
ParametricFieldView(final WebDriver driver, final By locator) {
this.driver = driver;
this.container = Container.currentTabContents(driver).findElement(locator);
}
public String getFirstSelectedFieldName(){
return firstParametricFilter().getText();
}
public String getSecondSelectedFieldName(){
return secondParametricFilter().getText();
}
private WebElement firstParametricFilter(){
return findElement(By.cssSelector(".parametric-selections span:nth-child(1)"));
}
private WebElement secondParametricFilter(){
return findElement(By.cssSelector(".parametric-selections span:nth-child(3)"));
}
public boolean parametricSelectionDropdownsExist(){
return findElement(By.cssSelector(".parametric-selections span")).isDisplayed();
}
public ChosenDrop firstParametricSelectionDropdown(){
return new ChosenDrop(firstParametricFilter(), getDriver());
}
public ChosenDrop secondParametricSelectionDropdown(){
return new ChosenDrop(secondParametricFilter(), getDriver());
}
public List<String> getParametricDropdownItems(final ChosenDrop chosenDrop){
final List<String> badFormat = ElementUtil.getTexts(chosenDrop.getItems());
return badFormat.stream().map(String::toUpperCase).collect(Collectors.toList());
}
public void clickSwapButton() {
findElement(By.cssSelector(".parametric-swap")).click();
}
public WebElement message() {
return findElement(By.cssSelector(".parametric-view-message"));
}
protected WebDriver getDriver() {
return driver;
}
protected WebElement findElement(final By locator) {
return container.findElement(locator);
}
protected List<WebElement> findElements(final By locator) {
return container.findElements(locator);
}
}