package it.com.atlassian.labs.speakeasy; import com.atlassian.pageobjects.PageBinder; import com.atlassian.pageobjects.binder.Init; import com.atlassian.pageobjects.binder.WaitUntil; import com.atlassian.webdriver.AtlassianWebDriver; import org.apache.commons.lang.Validate; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import javax.inject.Inject; import java.io.File; /** * */ public class InstallDialog { @Inject private AtlassianWebDriver driver; @Inject private PageBinder pageBinder; private MessagesBar messagesBar; @FindBy(name = "plugin-file") private WebElement pluginFileUpload; @FindBy(id = "submit-plugin-file") private WebElement pluginFileUploadSubmit; @Init public void init() { messagesBar = pageBinder.bind(MessagesBar.class); } @WaitUntil public void waitUntilOpen() { driver.waitUntilElementIsVisible(By.id("extension-wizard-link")); } public SpeakeasyUserPage uploadPlugin(File jar) { upload(jar); Validate.isTrue(messagesBar.getErrorMessages().isEmpty(), "Error installing '" + jar.getPath() + "': " + messagesBar.getErrorMessages()); return pageBinder.bind(SpeakeasyUserPage.class); } public SpeakeasyUserPage uploadPluginExpectingFailure(File jar) { upload(jar); Validate.isTrue(!messagesBar.getErrorMessages().isEmpty(), "Expected error installing plugin"); return pageBinder.bind(SpeakeasyUserPage.class); } public ExtensionWizard openCreateExtensionDialog() { driver.findElement(By.id("extension-wizard-link")).click(); return pageBinder.bind(ExtensionWizard.class); } private void upload(File jar) { pluginFileUpload.sendKeys(jar.getAbsolutePath()); pluginFileUploadSubmit.click(); driver.waitUntilElementIsNotLocated(By.id("install-dialog")); messagesBar.waitForMessages(); } public SpeakeasyUserPage clickCustomLink() { driver.findElement(By.id("custom-install-link")).click(); return pageBinder.bind(SpeakeasyUserPage.class); } public SpeakeasyUserPage cancel() { driver.findElement(By.linkText("Cancel")).click(); return pageBinder.bind(SpeakeasyUserPage.class); } }