1 package com.atlassian.pageobjects.elements.test;
2
3
4 import com.atlassian.pageobjects.elements.GlobalElementFinder;
5 import com.atlassian.pageobjects.elements.MultiSelectElement;
6 import com.atlassian.pageobjects.elements.Options;
7 import com.atlassian.pageobjects.elements.PageElement;
8 import com.atlassian.pageobjects.elements.PageElementFinder;
9 import com.atlassian.pageobjects.elements.SelectElement;
10 import com.atlassian.pageobjects.elements.test.pageobjects.page.ElementsPage;
11 import com.atlassian.pageobjects.elements.test.pageobjects.page.SelectElementPage;
12 import com.atlassian.pageobjects.elements.timeout.DefaultTimeouts;
13 import com.atlassian.pageobjects.elements.timeout.TimeoutType;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.openqa.selenium.By;
17
18 import java.util.List;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertFalse;
22 import static org.junit.Assert.assertTrue;
23
24 public class TestGlobalElementFinder extends AbstractFileBasedServerTest
25 {
26 PageElementFinder elementFinder;
27
28 @Before
29 public void initFinder()
30 {
31 elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
32 }
33
34 @Test
35 public void testFind()
36 {
37 product.visit(ElementsPage.class);
38
39 PageElement existing = elementFinder.find(By.id("test4_childList"));
40 assertTrue(existing.isPresent());
41
42 PageElement notExisting = elementFinder.find(By.id("not-really"));
43 assertFalse(notExisting.isPresent());
44 }
45
46 @Test
47 public void testFindCustomType()
48 {
49 product.visit(ElementsPage.class);
50
51 SelectElement select = elementFinder.find(By.id("awesome-select"), SelectElement.class);
52 assertTrue(select.isPresent());
53 assertEquals(4, select.getAllOptions().size());
54 }
55
56 @Test
57 public void testFindWithCustomTimeout()
58 {
59 product.visit(ElementsPage.class);
60
61 PageElement withTimeout = elementFinder.find(By.id("test4_childList"), TimeoutType.PAGE_LOAD);
62 assertTrue(withTimeout.isPresent());
63 assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, withTimeout.timed().isPresent().defaultTimeout());
64 }
65
66 @Test
67 public void testFindWithCustomTypeAndTimeout()
68 {
69 product.visit(ElementsPage.class);
70
71 SelectElement select = elementFinder.find(By.id("awesome-select"), SelectElement.class, TimeoutType.PAGE_LOAD);
72 assertTrue(select.isPresent());
73 assertEquals(4, select.getAllOptions().size());
74 assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
75 }
76
77 @Test
78 public void testFindAll()
79 {
80 product.visit(ElementsPage.class);
81
82 List<PageElement> items = elementFinder.findAll(By.className("test4_item"));
83 assertEquals(3, items.size());
84 assertEquals("Item 1", items.get(0).getText());
85 assertEquals("Item 2", items.get(1).getText());
86 assertEquals("Item 3", items.get(2).getText());
87 }
88
89 @Test
90 public void testFindAllWithCustomClass()
91 {
92 product.visit(SelectElementPage.class);
93
94 List<SelectElement> singleSelects = elementFinder.findAll(By.tagName("select"), SelectElement.class);
95 assertEquals(6, singleSelects.size());
96
97 SelectElement singleSelect = singleSelects.get(0);
98 assertEquals("Option1_Text", singleSelect.getSelected().text());
99 singleSelect.select(Options.text("Option2_Text"));
100 assertEquals("Option2_Text", singleSelect.getSelected().text());
101
102 List<MultiSelectElement> multiSelects = elementFinder.findAll(By.tagName("select"), MultiSelectElement.class);
103 assertEquals(6, multiSelects.size());
104
105 MultiSelectElement multiSelect = multiSelects.get(3);
106 assertEquals(0, multiSelect.getSelected().size());
107 multiSelect.select(Options.text("Option2_Text"));
108 assertEquals(1, multiSelect.getSelected().size());
109 }
110
111 @Test
112 public void testFindAllWithCustomTimeout()
113 {
114 product.visit(ElementsPage.class);
115
116 List<PageElement> items = elementFinder.findAll(By.className("test4_item"), TimeoutType.PAGE_LOAD);
117 for (PageElement element : items)
118 {
119 assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, element.timed().isPresent().defaultTimeout());
120 }
121 }
122
123 @Test
124 public void testFindAllWithCustomTypeAndTimeout()
125 {
126 product.visit(SelectElementPage.class);
127
128 List<SelectElement> singleSelects = elementFinder.findAll(By.tagName("select"), SelectElement.class, TimeoutType.PAGE_LOAD);
129 for (PageElement select : singleSelects)
130 {
131 assertTrue(select.isPresent());
132 assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
133 }
134 }
135 }