package de.asideas.crowdsource.testsupport.pageobjects.project;
import de.asideas.crowdsource.domain.shared.LikeStatus;
import de.asideas.crowdsource.testsupport.selenium.SeleniumWait;
import de.asideas.crowdsource.testsupport.selenium.WebDriverProvider;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static de.asideas.crowdsource.testsupport.selenium.AngularJsUtils.interpolationCompletedOfElementLocated;
@Component
public class ProjectStatusWidget {
@Autowired
private SeleniumWait wait;
@Autowired
private WebDriverProvider webDriverProvider;
@FindBy(css = ".project-details progress-bar .cs-progress__meter")
private WebElement progressBar;
@FindBy(className = "project-status__pledged-amount")
private WebElement pledgeAmountLabel;
@FindBy(className = "project-status__pledge-goal")
private WebElement pledgeGoalLabel;
@FindBy(className = "project-status__backers")
private WebElement backersLabel;
@FindBy(className = "project_likes_detail_count")
private WebElement likeCountLabel;
@FindBy(className = "project_likes_detail")
private WebElement likeWidget;
@FindBy(css = ".pd-creator strong")
private WebElement userLabel;
@FindBy(className = "to-pledging-form-button")
private WebElement scrollToPledgingFormButton;
public String getProgressBarValue() {
return progressBar.getCssValue("width");
}
public String getPledgedAmount() {
return pledgeAmountLabel.getText();
}
public String getPledgeGoal() {
return pledgeGoalLabel.getText();
}
public String getBackers() {
return backersLabel.getText();
}
public String getUserName() {
return userLabel.getText();
}
public Long getLikeCount(){
return Long.parseLong(likeCountLabel.getText());
}
public void clickLikeWidget(){
likeWidget.click();
}
public LikeStatus likedByUser(){
return likeWidget.getAttribute("class").contains("liked")?
LikeStatus.LIKE : LikeStatus.UNLIKE;
}
public void clickFundingButton() {
scrollToPledgingFormButton.click();
}
public void waitForDetailsToBeLoaded() {
RemoteWebDriver webDriver = webDriverProvider.provideDriver();
wait.until(interpolationCompletedOfElementLocated(By.cssSelector(".project-status__backers")));
PageFactory.initElements(webDriver, this);
}
}