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
23
24
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 }