1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
package org.xwiki.tree.test.po; |
21 |
|
|
22 |
|
import java.util.ArrayList; |
23 |
|
import java.util.List; |
24 |
|
|
25 |
|
import org.openqa.selenium.By; |
26 |
|
import org.openqa.selenium.StaleElementReferenceException; |
27 |
|
import org.openqa.selenium.WebDriver; |
28 |
|
import org.openqa.selenium.WebElement; |
29 |
|
import org.openqa.selenium.support.ui.ExpectedCondition; |
30 |
|
import org.xwiki.test.ui.po.BaseElement; |
31 |
|
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
|
@version |
36 |
|
@since |
37 |
|
|
|
|
| 69.1% |
Uncovered Elements: 17 (55) |
Complexity: 20 |
Complexity Density: 0.62 |
|
38 |
|
public class TreeNodeElement extends BaseElement |
39 |
|
{ |
40 |
|
|
41 |
|
|
42 |
|
|
43 |
|
private static final String CLASS = "class"; |
44 |
|
|
45 |
|
|
46 |
|
|
47 |
|
|
48 |
|
private WebElement treeElement; |
49 |
|
|
50 |
|
|
51 |
|
|
52 |
|
|
53 |
|
private By locator; |
54 |
|
|
55 |
|
|
56 |
|
|
57 |
|
|
58 |
|
@param |
59 |
|
@param |
60 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
61 |
8 |
public TreeNodeElement(WebElement treeElement, By locator)... |
62 |
|
{ |
63 |
8 |
this.treeElement = treeElement; |
64 |
8 |
this.locator = locator; |
65 |
|
} |
66 |
|
|
67 |
|
|
68 |
|
|
69 |
|
|
70 |
|
@return |
71 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
72 |
34 |
private WebElement getElement()... |
73 |
|
{ |
74 |
34 |
return this.treeElement.findElement(this.locator); |
75 |
|
} |
76 |
|
|
77 |
|
|
78 |
|
@return |
79 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
80 |
5 |
public String getLabel()... |
81 |
|
{ |
82 |
5 |
return getLabelElement().getText(); |
83 |
|
} |
84 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
85 |
6 |
private WebElement getLabelElement()... |
86 |
|
{ |
87 |
6 |
String labelId = getElement().getAttribute("aria-labelledby"); |
88 |
6 |
return getElement().findElement(By.id(labelId)); |
89 |
|
} |
90 |
|
|
91 |
|
|
92 |
|
@return |
93 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 1 |
Complexity Density: 0.25 |
|
94 |
2 |
public List<TreeNodeElement> getChildren()... |
95 |
|
{ |
96 |
2 |
List<TreeNodeElement> children = new ArrayList<>(); |
97 |
2 |
for (WebElement childElement : getElement().findElements(By.xpath("./ul/li"))) { |
98 |
2 |
children.add(new TreeNodeElement(this.treeElement, By.id(childElement.getAttribute("id")))); |
99 |
|
} |
100 |
2 |
return children; |
101 |
|
} |
102 |
|
|
103 |
|
|
104 |
|
@return |
105 |
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
106 |
0 |
public boolean isLeaf()... |
107 |
|
{ |
108 |
0 |
return getElement().getAttribute(CLASS).contains("jstree-leaf"); |
109 |
|
} |
110 |
|
|
111 |
|
|
112 |
|
@return |
113 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
114 |
6 |
public boolean isOpen()... |
115 |
|
{ |
116 |
6 |
return Boolean.valueOf(getElement().getAttribute("aria-expanded")); |
117 |
|
} |
118 |
|
|
119 |
|
|
120 |
|
@return |
121 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
122 |
1 |
public boolean isSelected()... |
123 |
|
{ |
124 |
1 |
return Boolean.valueOf(getElement().getAttribute("aria-selected")); |
125 |
|
} |
126 |
|
|
127 |
|
|
128 |
|
|
129 |
|
|
130 |
|
@return |
131 |
|
|
|
|
| 80% |
Uncovered Elements: 1 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
132 |
6 |
public TreeNodeElement open()... |
133 |
|
{ |
134 |
6 |
if (!isOpen()) { |
135 |
6 |
getToggleElement().click(); |
136 |
|
} |
137 |
6 |
return this; |
138 |
|
} |
139 |
|
|
140 |
|
|
141 |
|
|
142 |
|
|
143 |
|
@return |
144 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
145 |
0 |
public TreeNodeElement close()... |
146 |
|
{ |
147 |
0 |
if (isOpen()) { |
148 |
0 |
getToggleElement().click(); |
149 |
|
} |
150 |
0 |
return this; |
151 |
|
} |
152 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
153 |
6 |
private WebElement getToggleElement()... |
154 |
|
{ |
155 |
6 |
return getElement().findElement(By.xpath("./i[contains(@class, 'jstree-ocl')]")); |
156 |
|
} |
157 |
|
|
158 |
|
|
159 |
|
|
160 |
|
|
161 |
|
@return |
162 |
|
|
|
|
| 80% |
Uncovered Elements: 1 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
163 |
1 |
public TreeNodeElement select()... |
164 |
|
{ |
165 |
1 |
if (!isSelected()) { |
166 |
1 |
getLabelElement().click(); |
167 |
|
} |
168 |
1 |
return this; |
169 |
|
} |
170 |
|
|
171 |
|
|
172 |
|
|
173 |
|
|
174 |
|
@return |
175 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
176 |
0 |
public TreeNodeElement deselect()... |
177 |
|
{ |
178 |
0 |
if (isSelected()) { |
179 |
0 |
getLabelElement().click(); |
180 |
|
} |
181 |
0 |
return this; |
182 |
|
} |
183 |
|
|
184 |
|
|
185 |
|
|
186 |
|
|
187 |
|
@return |
188 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
189 |
6 |
public TreeNodeElement waitForIt()... |
190 |
|
{ |
191 |
6 |
getDriver().waitUntilCondition(new ExpectedCondition<Boolean>() |
192 |
|
{ |
|
|
| 75% |
Uncovered Elements: 1 (4) |
Complexity: 2 |
Complexity Density: 0.5 |
|
193 |
7 |
@Override... |
194 |
|
public Boolean apply(WebDriver driver) |
195 |
|
{ |
196 |
7 |
WebElement element = getElement(); |
197 |
7 |
try { |
198 |
7 |
return !Boolean.valueOf(element.getAttribute("aria-busy")); |
199 |
|
} catch (StaleElementReferenceException e) { |
200 |
|
|
201 |
0 |
return false; |
202 |
|
} |
203 |
|
} |
204 |
|
}); |
205 |
6 |
return this; |
206 |
|
} |
207 |
|
} |