View Javadoc

1   package com.atlassian.webdriver.jira.component.header;
2   
3   import javax.inject.Inject;
4   
5   import com.atlassian.pageobjects.Page;
6   import com.atlassian.pageobjects.PageBinder;
7   import com.atlassian.pageobjects.binder.Init;
8   import com.atlassian.pageobjects.component.Header;
9   import com.atlassian.pageobjects.component.WebSudoBanner;
10  import com.atlassian.webdriver.AtlassianWebDriver;
11  import com.atlassian.webdriver.jira.component.UserDiscoverable;
12  import com.atlassian.webdriver.jira.component.menu.AdminMenu;
13  import com.atlassian.webdriver.jira.component.menu.DashboardMenu;
14  import com.atlassian.webdriver.jira.component.menu.JiraUserMenu;
15  import com.atlassian.webdriver.jira.page.LogoutPage;
16  
17  import org.apache.commons.lang.NotImplementedException;
18  import org.openqa.selenium.By;
19  import org.openqa.selenium.WebElement;
20  import org.openqa.selenium.support.FindBy;
21  
22  /**
23   * @since 2.0
24   */
25  public class JiraHeader implements UserDiscoverable, Header
26  {
27      @Inject
28      PageBinder pageBinder;
29  
30      @Inject
31      AtlassianWebDriver driver;
32  
33      @FindBy(id="header")
34      private WebElement headerElement;
35  
36      private String userName;
37  
38      @Init
39      public void init()
40      {
41          By byId = By.id("header-details-user-fullname");
42  
43          userName = driver.elementIsVisible(byId) ? driver.findElement(byId).getText() : null;
44      }
45  
46      public DashboardMenu getDashboardMenu()
47      {
48          return pageBinder.bind(DashboardMenu.class);
49      }
50      public AdminMenu getAdminMenu()
51      {
52          return pageBinder.bind(AdminMenu.class);
53      }
54      public JiraUserMenu getUserMenu()
55      {
56          return pageBinder.bind(JiraUserMenu.class);
57      }
58  
59      public boolean isLoggedIn()
60      {
61          return userName != null;
62      }
63  
64      public boolean isAdmin()
65      {
66          return isLoggedIn() && driver.elementExistsAt(By.id("admin_link"), headerElement);
67      }
68  
69      public <M extends Page> M logout(Class<M> nextPage)
70      {
71          if (isLoggedIn()) {
72              pageBinder.navigateToAndBind(LogoutPage.class).confirmLogout();
73          }
74          return LogoutPage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
75      }
76  
77      public WebSudoBanner getWebSudoBanner()
78      {
79          throw new NotImplementedException();
80      }
81  }