package it.com.atlassian.labs.speakeasy; import com.atlassian.pageobjects.TestedProduct; import com.atlassian.pageobjects.page.HomePage; import com.atlassian.pageobjects.page.LoginPage; import com.atlassian.plugin.test.PluginJarBuilder; import com.atlassian.webdriver.pageobjects.WebDriverTester; import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import static com.google.common.collect.Lists.newArrayList; import static it.com.atlassian.labs.speakeasy.ExtensionBuilder.buildSimpleExtensionFile; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * */ public class TestConventionExtensions { private static TestedProduct<?> product = OwnerOfTestedProduct.INSTANCE; @Before public void login() { product.visit(LoginPage.class).loginAsSysAdmin(SpeakeasyUserPage.class); } @After public void logout() { ((WebDriverTester)product.getTester()).getDriver().manage().deleteAllCookies(); } @Test public void testBasicConventionPlugin() throws IOException, URISyntaxException { File zip = buildSimpleExtensionFile("test-convention"); product.getPageBinder().bind(SpeakeasyUserPage.class) .openInstallDialog() .uploadPlugin(zip) .enablePlugin("test-convention"); SpeakeasyUserPage page = product.visit(SpeakeasyUserPage.class); ExampleBanner banner = product.getPageBinder().bind(ExampleBanner.class); assertTrue(banner.isFooVisible()); assertTrue(banner.isFooImageLoaded()); assertEquals("Yahoo", banner.getYahooLinkText()); assertFalse(banner.isBarVisible()); assertTrue(banner.isBarImageLoaded()); assertEquals(asList("css/test-convention.css", "images/projectavatar.png", "js/test/foo.js", "ui/web-items.json", "atlassian-extension.json"), page.openEditDialog("test-convention").getFileNames()); page.uninstallPlugin("test-convention"); } @Test public void testEditAndBreakWithJavascriptSyntaxErrorThenFixPlugin() throws IOException { SpeakeasyUserPage page = product.getPageBinder().bind(SpeakeasyUserPage.class) .openInstallDialog() .openCreateExtensionDialog() .key("breakjs") .name("Breaking JS") .description("All Good") .create() .openEditDialog("breakjs") .editAndSaveFile("js/breakjs/main.js", "require(';", "Error parsing module 'breakjs/main' on line") .editAndSaveFile("js/breakjs/main.js", "var foo;") .done(); assertTrue(page.getPlugins().get("breakjs").getDescription().contains("All Good")); page.uninstallPlugin("breakjs"); } }