View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.elements.GlobalElementFinder;
4   import com.atlassian.pageobjects.elements.PageElement;
5   import com.atlassian.pageobjects.elements.PageElementFinder;
6   import com.atlassian.pageobjects.elements.query.Poller;
7   import com.atlassian.pageobjects.elements.test.pageobjects.page.DataAttributePage;
8   import com.google.common.collect.ImmutableMap;
9   import org.junit.Before;
10  import org.junit.Test;
11  import org.openqa.selenium.By;
12  
13  import java.util.Map;
14  
15  import static com.atlassian.pageobjects.elements.DataAttributeFinder.query;
16  import static com.atlassian.pageobjects.elements.query.Poller.waitUntilEquals;
17  import static org.junit.Assert.assertEquals;
18  import static org.junit.Assert.assertNull;
19  import static org.junit.Assert.assertTrue;
20  
21  /**
22   * Test {@link com.atlassian.webdriver.utils.by.ByDataAttribute}.
23   *
24   * @since 2.1
25   */
26  public class TestDataAttributeFinder extends AbstractFileBasedServerTest
27  {
28  
29      private PageElementFinder elementFinder;
30  
31      @Before
32      public void init()
33      {
34          product.visit(DataAttributePage.class);
35          elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
36      }
37  
38  
39      @Test
40      public void testRegularQuery()
41      {
42          PageElement main = elementFinder.find(By.id("mainContainer"));
43          assertTrue(query(main).hasDataAttribute("type", "main container"));
44          assertNull(query(main).getDataAttribute("rubbish"));
45          final Map<String,String> expectedOrderings = ImmutableMap.of(
46                  "1", "a",
47                  "2", "b",
48                  "3", "c",
49                  "4", "d"
50          );
51          for (PageElement li : main.findAll(By.tagName("li")))
52          {
53              final String ordering = query(li).getDataAttribute("ordering");
54              assertEquals(li.getText(), expectedOrderings.get(ordering));
55          }
56      }
57  
58      @Test
59      public void testTimedQuery()
60      {
61          PageElement main = elementFinder.find(By.id("mainContainer"));
62          Poller.waitUntilTrue(query(main).timed().hasDataAttribute("type", "main container"));
63          final Map<String,String> expectedOrderings = ImmutableMap.of(
64                  "a", "1",
65                  "b", "2",
66                  "c", "3",
67                  "d", "4"
68          );
69          for (PageElement li : main.findAll(By.tagName("li")))
70          {
71              waitUntilEquals(expectedOrderings.get(li.getText()), query(li).timed().getDataAttribute("ordering"));
72          }
73      }
74  
75  }