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
21
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
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 }