View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.elements.MultiSelectElement;
4   import com.atlassian.pageobjects.elements.Option;
5   import com.atlassian.pageobjects.elements.Options;
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 AbstractPageElementBrowserTest
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          // verify that by default the selected option is the first one.
55          assertEquals("option1_Value", page.findSelect(By.id("test1_Select")).getSelected().value());
56  
57          // verify selected when element is loaded with an option selected by default
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          //select the 3rd option and verify
69          select.select(Options.id("test1_Option3"));
70          assertEquals("option3_Value", select.getSelected().value());
71  
72           //select the 2nd option and verify
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          //verify default
85          assertEquals("Option1_Text", select.getSelected().text());
86  
87          //select select third option by text
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           //verify select with no default
98          assertEquals(0, page.findMultiSelect(By.id("test4_Select")).getSelected().size());
99  
100         //verify select with 1 default
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         //verify select with multiple defaults
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         //select with no defaults
119         MultiSelectElement select = page.findMultiSelect(By.id("test4_Select"));
120         select.selectAll();
121         assertEquals(3, select.getSelected().size());
122 
123         //select with one defaults
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         // select options when there was none by default
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         // select options when there where some by default
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         //select same item 2 times
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 }