1 package com.atlassian.pageobjects.elements.test;
2
3 import com.atlassian.pageobjects.elements.Option;
4 import com.atlassian.pageobjects.elements.Options;
5 import com.atlassian.pageobjects.elements.MultiSelectElement;
6 import com.atlassian.pageobjects.elements.SelectElement;
7 import com.atlassian.pageobjects.elements.test.pageobjects.page.SelectElementPage;
8 import org.junit.Test;
9 import org.openqa.selenium.By;
10
11 import java.util.List;
12
13 import static junit.framework.Assert.assertEquals;
14 import static junit.framework.Assert.assertTrue;
15
16 public class TestSelectElemet extends AbstractFileBasedServerTest
17 {
18 @Test
19 public void testUseAnnotationToLocateSelectElements()
20 {
21 SelectElementPage page = product.visit(SelectElementPage.class);
22 assertTrue(page.getSelectElement1().isPresent());
23 assertTrue(page.getMultiSelectElement4().isPresent());
24 assertEquals(3, page.getSelectElement1().getAllOptions().size());
25 }
26
27 @Test
28 public void test_SingleSelect_All()
29 {
30 SelectElementPage page = product.visit(SelectElementPage.class);
31
32 List<Option> options = page.findSelect(By.id("test1_Select")).getAllOptions();
33 assertEquals(3, options.size());
34
35 assertEquals("test1_Option1", options.get(0).id());
36 assertEquals("option1_Value", options.get(0).value());
37 assertEquals("Option1_Text", options.get(0).text());
38
39 assertEquals("test1_Option2", options.get(1).id());
40 assertEquals("option2_Value", options.get(1).value());
41 assertEquals("Option2_Text", options.get(1).text());
42
43 assertEquals("test1_Option3", options.get(2).id());
44 assertEquals("option3_Value", options.get(2).value());
45 assertEquals("Option3_Text", options.get(2).text());
46
47 }
48
49 @Test
50 public void test_SingleSelect_Selected()
51 {
52 SelectElementPage page = product.visit(SelectElementPage.class);
53
54
55 assertEquals("option1_Value", page.findSelect(By.id("test1_Select")).getSelected().value());
56
57
58 assertEquals("option2_Value", page.findSelect(By.id("test2_Select")).getSelected().value());
59 }
60
61 @Test
62 public void test_SingleSelect_SelectingOption()
63 {
64 SelectElementPage page = product.visit(SelectElementPage.class);
65
66 SelectElement select = page.findSelect(By.id("test1_Select"));
67
68
69 select.select(Options.id("test1_Option3"));
70 assertEquals("option3_Value", select.getSelected().value());
71
72
73 select.select(Options.id("test1_Option2"));
74 assertEquals("option2_Value", select.getSelected().value());
75 }
76
77 @Test
78 public void test_SingleSelect_SelectingOptionsWhenOnlyValueAndTextArePresent()
79 {
80 SelectElementPage page = product.visit(SelectElementPage.class);
81
82 SelectElement select = page.findSelect(By.id("test3_Select"));
83
84
85 assertEquals("Option1_Text", select.getSelected().text());
86
87
88 select.select(Options.text("Option3_Text"));
89 assertEquals("option3_Value", select.getSelected().value());
90 }
91
92 @Test
93 public void test_MultiSelect_AllSelected()
94 {
95 SelectElementPage page = product.visit(SelectElementPage.class);
96
97
98 assertEquals(0, page.findMultiSelect(By.id("test4_Select")).getSelected().size());
99
100
101 List<Option> defaultOptions = page.findMultiSelect(By.id("test5_Select")).getSelected();
102 assertEquals(1, defaultOptions.size());
103 assertEquals("option2_Value",defaultOptions.get(0).value());
104
105
106 defaultOptions = page.findMultiSelect(By.id("test6_Select")).getSelected();
107 assertEquals(3, defaultOptions.size());
108 assertEquals("option2_Value",defaultOptions.get(0).value());
109 assertEquals("option4_Value",defaultOptions.get(1).value());
110 assertEquals("option6_Value",defaultOptions.get(2).value());
111 }
112
113 @Test
114 public void test_MultiSelect_SelectAll()
115 {
116 SelectElementPage page = product.visit(SelectElementPage.class);
117
118
119 MultiSelectElement select = page.findMultiSelect(By.id("test4_Select"));
120 select.selectAll();
121 assertEquals(3, select.getSelected().size());
122
123
124 select = page.findMultiSelect(By.id("test5_Select"));
125 select.selectAll();
126 assertEquals(3, select.getSelected().size());
127 }
128
129 @Test
130 public void test_MultiSelect_SelectingOptions()
131 {
132 SelectElementPage page = product.visit(SelectElementPage.class);
133
134
135 MultiSelectElement select = page.findMultiSelect(By.id("test4_Select"));
136 select.select(Options.id("test4_Option2"));
137 assertEquals(1, select.getSelected().size());
138
139 select.select(Options.id("test4_Option3"));
140 assertEquals(2, select.getSelected().size());
141
142
143 select = page.findMultiSelect(By.id("test5_Select"));
144 select.select(Options.id("test5_Option1")).select(Options.id("test5_Option3"));
145 assertEquals(3, select.getSelected().size());
146 }
147
148 @Test
149 public void test_MultiSelect_SelectingAlreadySelectedOptions()
150 {
151 SelectElementPage page = product.visit(SelectElementPage.class);
152
153 MultiSelectElement select = page.findMultiSelect(By.id("test5_Select"));
154 select.select(Options.id("test5_Option2"));
155 assertEquals(1, select.getSelected().size());
156
157
158 select.select(Options.id("test5_Option3"));
159 select.select(Options.id("test5_Option3"));
160 assertEquals(2, select.getSelected().size());
161 }
162
163 @Test
164 public void test_MultiSelect_UnselectingOptions()
165 {
166 SelectElementPage page = product.visit(SelectElementPage.class);
167
168 MultiSelectElement select = page.findMultiSelect(By.id("test5_Select"));
169 select.unselect(Options.id("test5_Option2"));
170 assertEquals(0, select.getSelected().size());
171
172 select = page.findMultiSelect(By.id("test6_Select"));
173 select.unselect(Options.id("test6_Option2")).unselect(Options.id("test6_Option4"));
174 assertEquals(1, select.getSelected().size());
175
176 }
177
178 @Test
179 public void test_MultiSelect_UnselectingAlreadyUnselectedOptions()
180 {
181 SelectElementPage page = product.visit(SelectElementPage.class);
182
183 MultiSelectElement select = page.findMultiSelect(By.id("test5_Select"));
184 select.unselect(Options.id("test5_Option1"));
185 assertEquals(1, select.getSelected().size());
186
187 select = page.findMultiSelect(By.id("test6_Select"));
188 select.unselect(Options.id("test6_Option1")).unselect(Options.id("test6_Option3"));
189 assertEquals(3, select.getSelected().size());
190
191 }
192 }