package org.jboss.windup.testutil.html;
import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import java.util.List;
/**
* Contains methods for evaluating and retrieving data from the application list report.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*/
public class TestApplicationListUtil extends TestReportUtil
{
/**
* Gets the total story points for the given application name. This will return -1 if it
* could not find the story point information.
*/
public int getTotalStoryPoints(String applicationName)
{
return getEffortPoints(applicationName, "total");
}
/**
* Gets the shared story points for the given application name. This will return -1 if it
* could not find the story point information.
*/
public int getSharedStoryPoints(String applicationName)
{
return getEffortPoints(applicationName, "shared");
}
/**
* Gets the unique story points for the given application name. This will return -1 if it
* could not find the story point information.
*/
public int getUniqueStoryPoints(String applicationName)
{
return getEffortPoints(applicationName, "unique");
}
/**
* Type should be 'shared' for shared and 'unique' for total.
*/
private int getEffortPoints(String applicationName, String type)
{
WebElement applicationRow = getApplicationRow(applicationName);
if (applicationRow == null)
return -1;
String xpath = "./div[contains(@class, 'stats')]/div[contains(@class, 'effortPoints') and contains(@class, '" + type + "')]";
WebElement pointsSectionElement = applicationRow.findElement(By.xpath(xpath));
WebElement effortPointsElement = pointsSectionElement.findElement(By.cssSelector(".points"));
return Integer.parseInt(effortPointsElement.getText());
}
private WebElement getApplicationRow(String applicationName)
{
List<WebElement> appInfoElements = getDriver().findElements(By.cssSelector(".appInfo"));
for (WebElement appInfoRow : appInfoElements)
{
WebElement filename = appInfoRow.findElement(By.cssSelector(".fileName"));
if (filename != null && StringUtils.equals(filename.getText(), applicationName))
return appInfoRow;
}
return null;
}
}