package it.com.atlassian.labs.speakeasy;
import com.atlassian.pageobjects.Page;
import com.atlassian.pageobjects.PageBinder;
import com.atlassian.pageobjects.ProductInstance;
import com.atlassian.pageobjects.binder.WaitUntil;
import com.atlassian.webdriver.AtlassianWebDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import javax.inject.Inject;
import java.io.IOException;
import static it.com.atlassian.labs.speakeasy.ProductUtils.flushMailQueue;
/**
*
*/
public class FeedbackDialog
{
@Inject
private AtlassianWebDriver driver;
@Inject
private PageBinder binder;
@FindBy(id="feedback-dialog")
private WebElement dialogElement;
@FindBy(className="feedback-submit")
private WebElement feedbackSubmit;
@FindBy(id="feedback-message")
private WebElement feedbackMessage;
private final String pluginKey;
@Inject
private ProductInstance productInstance;
public FeedbackDialog(String pluginKey)
{
this.pluginKey = pluginKey;
}
@WaitUntil
public void waitUntilOpen()
{
driver.waitUntilElementIsVisibleAt(By.className("feedback-submit"), dialogElement);
}
public FeedbackDialog message(String text)
{
feedbackMessage.clear();
feedbackMessage.sendKeys(text);
return this;
}
public <T extends Page> T send(Class<T> nextPage) throws IOException
{
feedbackSubmit.click();
driver.waitUntilElementIsNotLocated(By.id("feedback-dialog"));
flushMailQueue(productInstance);
return binder.bind(nextPage);
}
}