View Javadoc

1   package com.atlassian.webdriver.jira;
2   
3   import com.atlassian.pageobjects.Defaults;
4   import com.atlassian.pageobjects.Page;
5   import com.atlassian.pageobjects.PageBinder;
6   import com.atlassian.pageobjects.ProductInstance;
7   import com.atlassian.pageobjects.TestedProduct;
8   import com.atlassian.pageobjects.TestedProductFactory;
9   import com.atlassian.pageobjects.binder.InjectPageBinder;
10  import com.atlassian.pageobjects.binder.PostInjectionProcessor;
11  import com.atlassian.pageobjects.binder.StandardModule;
12  import com.atlassian.pageobjects.component.Header;
13  import com.atlassian.pageobjects.elements.ElementModule;
14  import com.atlassian.pageobjects.elements.timeout.TimeoutsModule;
15  import com.atlassian.pageobjects.page.AdminHomePage;
16  import com.atlassian.pageobjects.page.HomePage;
17  import com.atlassian.pageobjects.page.LoginPage;
18  import com.atlassian.pageobjects.page.WebSudoPage;
19  import com.atlassian.webdriver.AtlassianWebDriverModule;
20  import com.atlassian.webdriver.jira.component.header.JiraHeader;
21  import com.atlassian.webdriver.jira.page.DashboardPage;
22  import com.atlassian.webdriver.jira.page.JiraAdminHomePage;
23  import com.atlassian.webdriver.jira.page.JiraLoginPage;
24  import com.atlassian.webdriver.jira.page.JiraWebSudoPage;
25  import com.atlassian.webdriver.pageobjects.DefaultWebDriverTester;
26  import com.atlassian.webdriver.pageobjects.WebDriverTester;
27  import com.google.inject.Binder;
28  import com.google.inject.Module;
29  
30  import static com.google.common.base.Preconditions.checkNotNull;
31  
32  /**
33   *
34   */
35  @Defaults(instanceId = "jira", contextPath = "/jira", httpPort = 2990)
36  public class JiraTestedProduct implements TestedProduct<WebDriverTester>
37  {
38      private final WebDriverTester webDriverTester;
39      private final ProductInstance productInstance;
40      private final PageBinder pageBinder;
41  
42      public JiraTestedProduct(TestedProductFactory.TesterFactory<WebDriverTester> testerFactory, ProductInstance productInstance)
43      {
44          checkNotNull(productInstance);
45          WebDriverTester tester = null;
46          if (testerFactory == null)
47          {
48              tester = new DefaultWebDriverTester();
49          }
50          else
51          {
52              tester = testerFactory.create();
53          }
54          this.webDriverTester = tester;
55          this.productInstance = productInstance;
56          this.pageBinder = new InjectPageBinder(productInstance, webDriverTester, new StandardModule(this), new AtlassianWebDriverModule(this),
57                  new ElementModule(), new TimeoutsModule(),
58                  new Module()
59                  {
60                      public void configure(Binder binder)
61                      {
62                          binder.bind(PostInjectionProcessor.class).to(ClickableLinkPostInjectionProcessor.class);
63                      }
64                  });
65  
66          this.pageBinder.override(Header.class, JiraHeader.class);
67          this.pageBinder.override(HomePage.class, DashboardPage.class);
68          this.pageBinder.override(AdminHomePage.class, JiraAdminHomePage.class);
69          this.pageBinder.override(LoginPage.class, JiraLoginPage.class);
70          this.pageBinder.override(WebSudoPage.class, JiraWebSudoPage.class);
71      }
72  
73      public DashboardPage gotoHomePage()
74      {
75          return pageBinder.navigateToAndBind(DashboardPage.class);
76      }
77  
78      public JiraAdminHomePage gotoAdminHomePage()
79      {
80          return pageBinder.navigateToAndBind(JiraAdminHomePage.class);
81      }
82  
83      public JiraLoginPage gotoLoginPage()
84      {
85          return pageBinder.navigateToAndBind(JiraLoginPage.class);
86      }
87  
88      public <P extends Page> P visit(Class<P> pageClass, Object... args)
89      {
90          return pageBinder.navigateToAndBind(pageClass, args);
91      }
92  
93      public PageBinder getPageBinder()
94      {
95          return pageBinder;
96      }
97  
98      public ProductInstance getProductInstance()
99      {
100         return productInstance;
101     }
102 
103     public WebDriverTester getTester()
104     {
105         return webDriverTester;
106     }
107 }