1 package it.com.atlassian.activeobjects;
2
3 import com.atlassian.activeobjects.pageobjects.ActiveObjectsAdminPage;
4 import com.atlassian.activeobjects.pageobjects.ActiveObjectsBackupPage;
5 import com.atlassian.activeobjects.pageobjects.ActiveObjectsDeleteDatabasePage;
6 import com.atlassian.activeobjects.pageobjects.AoTable;
7 import com.atlassian.pageobjects.Page;
8 import com.atlassian.pageobjects.TestedProduct;
9 import com.atlassian.pageobjects.TestedProductFactory;
10 import com.atlassian.pageobjects.Tester;
11 import com.atlassian.pageobjects.page.HomePage;
12 import com.atlassian.pageobjects.page.LoginPage;
13 import com.atlassian.webdriver.refapp.RefappTestedProduct;
14 import com.google.common.base.Predicate;
15 import com.google.common.collect.Collections2;
16 import com.google.common.collect.Lists;
17 import org.junit.Before;
18 import org.junit.Test;
19
20 import java.util.List;
21
22 import static com.atlassian.activeobjects.pageobjects.AoTable.table;
23 import static com.google.common.collect.Lists.newArrayList;
24 import static org.hamcrest.CoreMatchers.containsString;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertThat;
27 import static org.junit.Assert.assertTrue;
28
29 public final class ActiveObjectsAdminFunctionalTest {
30 private static final String TEST_PLUGIN_NAME = "ActiveObjects Plugin - Test Plugin";
31 private static final Predicate<AoTable> MATCHES_TEST_PLUGIN = table -> TEST_PLUGIN_NAME.equals(table.plugin);
32
33 private TestedProduct<? extends Tester> product;
34
35 @Before
36 public final void setUp() {
37 product = TestedProductFactory.create(System.getProperty("tested.app", RefappTestedProduct.class.getName()));
38
39 loginAsSysAdmin(product, ActiveObjectsDeleteDatabasePage.class);
40 }
41
42 @Test
43 public final void testAdmin() {
44 final ActiveObjectsAdminPage admin = loginAsSysAdmin(product, ActiveObjectsAdminPage.class);
45 assertThat(admin.getTitle(), containsString("Plugin Data Storage"));
46
47
48 product.visit(ActiveObjectsBackupPage.class);
49
50 assertTables(
51 newArrayList(
52 table(TEST_PLUGIN_NAME, "AO_0F732C_LONG_NAME_TO_AUTHOR", "9"),
53 table(TEST_PLUGIN_NAME, "AO_0F732C_AUTHORSHIP", "10"),
54 table(TEST_PLUGIN_NAME, "AO_0F732C_BOOK", "3")),
55 Lists.newArrayList(Collections2.filter(product.visit(ActiveObjectsAdminPage.class).getTables(), MATCHES_TEST_PLUGIN)));
56 }
57
58 private void assertTables(List<AoTable> expected, List<AoTable> actual) {
59 assertEquals(expected.size(), actual.size());
60 for (AoTable e : expected) {
61 assertTrue("Didn't find " + e + " in " + actual, actual.contains(e));
62 }
63 }
64
65 private <P extends Page> P loginAsSysAdmin(TestedProduct<? extends Tester> product, Class<P> nextPage) {
66 if (!product.visit(HomePage.class).getHeader().isLoggedIn()) {
67 return product.visit(LoginPage.class).loginAsSysAdmin(nextPage);
68 } else {
69 return product.visit(nextPage);
70 }
71 }
72 }