View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.browser.Browser;
4   import com.atlassian.pageobjects.browser.IgnoreBrowser;
5   import com.atlassian.pageobjects.elements.CheckboxElement;
6   import com.atlassian.pageobjects.elements.MultiSelectElement;
7   import com.atlassian.pageobjects.elements.PageElement;
8   import com.atlassian.pageobjects.elements.SelectElement;
9   import com.atlassian.pageobjects.elements.test.pageobjects.page.PageElementIterablePage;
10  import org.junit.Before;
11  import org.junit.Test;
12  
13  import java.util.Iterator;
14  
15  import static junit.framework.Assert.assertEquals;
16  import static junit.framework.Assert.assertFalse;
17  import static junit.framework.Assert.assertTrue;
18  
19  /**
20   * Tests that {@code @ElementBy} works on {@code Iterable<PageElement>}
21   * @since 2.1
22   */
23  public class TestIterable extends AbstractPageElementBrowserTest
24  {
25      private PageElementIterablePage elementsPage;
26  
27      @Before
28      public void initFinder()
29      {
30          elementsPage = product.visit(PageElementIterablePage.class);
31      }
32  
33      @Test
34      public void testIterableNoElement()
35      {
36          Iterator<PageElement> elements = elementsPage.getNoElements().iterator();
37          assertFalse(elements.hasNext());
38      }
39  
40      @Test
41      public void testIterableOneElement()
42      {
43          Iterator<PageElement> elements = elementsPage.getOneElements().iterator();
44          assertTrue(elements.hasNext());
45          assertEquals("valid1", elements.next().getText());
46      }
47  
48      @Test
49      public void testIterableTwoElements()
50      {
51          Iterator<PageElement> elements = elementsPage.getTwoElements().iterator();
52          assertTrue(elements.hasNext());
53          assertEquals("valid1", elements.next().getText());
54          assertTrue(elements.hasNext());
55          assertEquals("valid2", elements.next().getText());
56      }
57  
58      @Test
59      @IgnoreBrowser(Browser.HTMLUNIT_NOJS)
60      public void testIterableThreeElements()
61      {
62          Iterator<PageElement> elements = elementsPage.getThreeElements().iterator();
63          assertTrue(elements.hasNext());
64          assertEquals("valid1", elements.next().getText());
65          assertTrue(elements.hasNext());
66          assertEquals("valid2", elements.next().getText());
67          assertTrue(elements.hasNext());
68          assertEquals("valid3", elements.next().getText());
69  
70          // We need to insert a fourth element dynamically
71          elementsPage.addNewItem();
72          
73          elements = elementsPage.getThreeElements().iterator();
74          assertTrue(elements.hasNext());
75          assertEquals("valid1", elements.next().getText());
76          assertTrue(elements.hasNext());
77          assertEquals("valid2", elements.next().getText());
78          assertTrue(elements.hasNext());
79          assertEquals("valid3", elements.next().getText());
80          assertTrue(elements.hasNext());
81          assertEquals("valid4", elements.next().getText());
82      }
83      
84      @Test
85      public void testSubclasses()
86      {
87          CheckboxElement checkbox = (CheckboxElement) elementsPage.getOneCheckbox();
88          assertEquals("CheckboxValue", checkbox.getValue());
89  
90          SelectElement select = (SelectElement) elementsPage.getOneSelect();
91          assertEquals("option2_Value", select.getSelected().value());
92  
93          MultiSelectElement multiselect = (MultiSelectElement) elementsPage.getOneMultiSelect();
94          assertEquals(2, multiselect.getSelected().size());
95      }
96  
97      @Test
98      public void testIterableCheckbox()
99      {
100         Iterator<CheckboxElement> elements = elementsPage.getTwoCheckboxes().iterator();
101         assertTrue(elements.hasNext());
102         assertEquals("koala", elements.next().getValue());
103         assertTrue(elements.hasNext());
104         assertEquals("kangaroo", elements.next().getValue());
105     }
106 
107     @Test
108     public void testIterableSelect()
109     {
110         Iterator<SelectElement> elements = elementsPage.getTwoSelects().iterator();
111         assertTrue(elements.hasNext());
112         assertEquals("tree", elements.next().getSelected().value());
113         assertTrue(elements.hasNext());
114         assertEquals("forest", elements.next().getSelected().value());
115     }
116 
117     @Test
118     public void testIterableMultiSelect()
119     {
120         Iterator<MultiSelectElement> elements = elementsPage.getTwoMultiSelects().iterator();
121         assertTrue(elements.hasNext());
122         assertEquals("tree", elements.next().getSelected().get(0).value());
123         assertTrue(elements.hasNext());
124         assertEquals("forest", elements.next().getSelected().get(0).value());
125     }
126 }