package it.com.atlassian.labs.speakeasy;
import com.atlassian.pageobjects.TestedProduct;
import com.atlassian.pageobjects.page.AdminHomePage;
import com.atlassian.pageobjects.page.HomePage;
import com.atlassian.pageobjects.page.LoginPage;
import com.atlassian.webdriver.pageobjects.WebDriverTester;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
*
*/
public class TestCommonJsModules
{
private static TestedProduct<?> product = OwnerOfTestedProduct.INSTANCE;
private static Logger log = LoggerFactory.getLogger(TestUserProfile.class);
@Before
public void login()
{
product.visit(LoginPage.class).loginAsSysAdmin(SpeakeasyUserPage.class);
}
@After
public void logout()
{
((WebDriverTester)product.getTester()).getDriver().manage().deleteAllCookies();
}
@Test
public void testExports()
{
CommonJsModulesTab tab = product.getPageBinder().bind(SpeakeasyUserPage.class)
.viewCommonJsModulesTab();
assertEquals(newArrayList("sayHi"), tab.getExportNames("test/my-module"));
assertTrue(tab.getExportNames("test/private").isEmpty());
}
@Test
public void testSharedExports() throws IOException
{
File host = ExtensionBuilder.startSimpleBuilder("host", "Host")
.addFormattedResource("modules/host/public.js",
"/** @public */",
"exports.name = 'Bob';")
.build();
File client = ExtensionBuilder.startSimpleBuilder("client", "Client")
.addFormattedResource("modules/client/private.js",
"/**",
" * @context atl.admin",
" */",
"var name = require('host/public').name;",
"var $ = require('speakeasy/jquery').jQuery;",
"$(document).ready(function() {",
" $('<h1 />').attr('id', 'foo').html(name).prependTo('body');",
"});")
.build();
product.getPageBinder().bind(SpeakeasyUserPage.class)
.openInstallDialog()
.uploadPlugin(host)
.openInstallDialog()
.uploadPlugin(client)
.enablePlugin("client")
.enablePlugin("host");
product.visit(AdminPage.class);
assertEquals("Bob", product.getPageBinder().bind(ExampleBanner.class).getFooText());
SpeakeasyUserPage page = product.visit(SpeakeasyUserPage.class);
page.uninstallPlugin("host").uninstallPlugin("client");
}
}