1 package com.atlassian.activeobjects.pageobjects;
2
3 import com.atlassian.pageobjects.Page;
4 import com.atlassian.pageobjects.elements.ElementBy;
5 import com.atlassian.pageobjects.elements.PageElement;
6 import com.atlassian.webdriver.AtlassianWebDriver;
7 import org.openqa.selenium.By;
8
9 import javax.inject.Inject;
10 import java.util.LinkedList;
11 import java.util.List;
12
13 import static com.atlassian.activeobjects.pageobjects.AoTable.table;
14
15 public class ActiveObjectsAdminPage implements Page {
16 @Inject
17 protected AtlassianWebDriver driver;
18
19 @ElementBy(tagName = "tbody")
20 PageElement plugins;
21
22 @Override
23 public String getUrl() {
24 return "/plugins/servlet/active-objects/tables/list";
25 }
26
27 public String getTitle() {
28 return driver.getTitle();
29 }
30
31 public List<AoTable> getTables() {
32 final List<AoTable> tables = new LinkedList<AoTable>();
33 for (PageElement tr : plugins.findAll(By.tagName("tr"))) {
34 final String pluginName = tr.find(By.className("ao-plugin-name")).getText();
35 final List<PageElement> tableNames = tr.find(By.className("ao-table-names")).findAll(By.tagName("li"));
36 final List<PageElement> rowCounts = tr.find(By.className("ao-row-counts")).findAll(By.tagName("li"));
37
38 for (int i = 0; i < tableNames.size(); i++) {
39 tables.add(table(pluginName, tableNames.get(i).getText(), rowCounts.get(i).getText()));
40 }
41 }
42 return tables;
43 }
44 }