Skip to content

Commit e17dfa3

Browse files
Reworking some of the allowed file extension tests.
1 parent 88070ee commit e17dfa3

2 files changed

Lines changed: 347 additions & 79 deletions

File tree

Lines changed: 110 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package org.labkey.test.pages.core.admin;
22

3+
import org.labkey.test.BootstrapLocators;
34
import org.labkey.test.Locator;
45
import org.labkey.test.Locators;
56
import org.labkey.test.WebDriverWrapper;
67
import org.labkey.test.WebTestHelper;
78
import org.labkey.test.components.html.Input;
89
import org.labkey.test.pages.LabKeyPage;
910
import org.labkey.test.util.PortalHelper;
11+
import org.openqa.selenium.NoSuchElementException;
12+
import org.openqa.selenium.StaleElementReferenceException;
13+
import org.openqa.selenium.TimeoutException;
1014
import org.openqa.selenium.WebDriver;
1115
import org.openqa.selenium.WebElement;
16+
import org.openqa.selenium.support.ui.ExpectedConditions;
17+
18+
import java.util.List;
19+
import java.util.stream.Collectors;
1220

1321
public class AllowedFileExtensionAdminPage extends LabKeyPage<AllowedFileExtensionAdminPage.ElementCache>
1422
{
@@ -23,6 +31,23 @@ public static AllowedFileExtensionAdminPage beginAt(WebDriverWrapper webDriverWr
2331
return new AllowedFileExtensionAdminPage(webDriverWrapper.getDriver());
2432
}
2533

34+
@Override
35+
protected void waitForPage()
36+
{
37+
waitFor(()-> {
38+
try
39+
{
40+
return !BootstrapLocators.loadingSpinner.areAnyVisible(getDriver()) &&
41+
elementCache().extension.getComponentElement().isDisplayed();
42+
}
43+
catch (NoSuchElementException | StaleElementReferenceException | TimeoutException retry)
44+
{
45+
return false;
46+
}
47+
}, "Allowed File Extensions page did not load in time.", 3_000);
48+
49+
}
50+
2651
public AllowedFileExtensionAdminPage setExtension(String extension)
2752
{
2853
elementCache().extension.set(extension);
@@ -31,9 +56,11 @@ public AllowedFileExtensionAdminPage setExtension(String extension)
3156

3257
public String clickSaveExpectingError()
3358
{
59+
String errorText;
3460
elementCache().saveExtension.click();
61+
errorText = waitForElement(Locators.labkeyError).getText();
3562
clearCache();
36-
return waitForElement(Locators.labkeyError).getText();
63+
return errorText;
3764
}
3865

3966
public AllowedFileExtensionAdminPage clickSaveExtension()
@@ -45,30 +72,90 @@ public AllowedFileExtensionAdminPage clickSaveExtension()
4572

4673
public AllowedFileExtensionAdminPage updateExtension(String oldExtension, String newExtension)
4774
{
48-
elementCache().allowedExtension(oldExtension).set(newExtension);
75+
getAllowedExtension(getAllowedExtensionIndex(oldExtension)).set(newExtension);
4976
clearCache();
5077
return this;
5178
}
5279

53-
public AllowedFileExtensionAdminPage deleteExtension(int index)
80+
public AllowedFileExtensionAdminPage clickSaveUpdateExtension()
5481
{
55-
elementCache().deleteExtension(index);
82+
elementCache().saveUpdateExtension.click();
83+
sleep(750);
5684
clearCache();
5785
return this;
5886
}
5987

60-
public AllowedFileExtensionAdminPage clickUpdateExtension()
88+
public String clickUpdateExtensionExpectingError()
6189
{
62-
elementCache().updateExtension.click();
90+
elementCache().saveUpdateExtension.click();
91+
clearCache();
92+
return waitForElement(Locators.labkeyError).getText();
93+
}
94+
95+
public AllowedFileExtensionAdminPage deleteExtension(int index)
96+
{
97+
WebElement deleteButton = elementCache().deleteExtensions.get(index);
98+
deleteButton.click();
99+
100+
shortWait().withMessage("Existing extenstion was not deleted.")
101+
.until(ExpectedConditions.stalenessOf(deleteButton));
102+
63103
clearCache();
64104
return this;
65105
}
66106

67-
public String clickUpdateExtensionExpectingError()
107+
public AllowedFileExtensionAdminPage deleteExtension(String extension)
108+
{
109+
return deleteExtension(getAllowedExtensionIndex(extension));
110+
}
111+
112+
public AllowedFileExtensionAdminPage deleteAllExtensions(boolean acceptAlert)
68113
{
69-
elementCache().updateExtension.click();
114+
elementCache().deleteAll.click();
115+
116+
if (acceptAlert)
117+
{
118+
acceptAlert();
119+
shortWait().withMessage("'Delete All' button should have gone away.")
120+
.until(ExpectedConditions.stalenessOf(elementCache().deleteAll));
121+
}
122+
else
123+
{
124+
cancelAlert();
125+
}
126+
70127
clearCache();
71-
return waitForElement(Locators.labkeyError).getText();
128+
return this;
129+
}
130+
131+
public List<Input> getAllowedExtensions()
132+
{
133+
List<WebElement> collection = Locator.inputByIdContaining("existingValue")
134+
.findElements(elementCache().existingPanel);
135+
136+
return collection.stream().map(el -> new Input(el, getDriver())).collect(Collectors.toList());
137+
138+
}
139+
140+
public Input getAllowedExtension(int index)
141+
{
142+
return getAllowedExtensions().get(index);
143+
}
144+
145+
public Integer getAllowedExtensionIndex(String extension)
146+
{
147+
int index = 0;
148+
List<Input> allowedExtensions = getAllowedExtensions();
149+
150+
for(Input element : allowedExtensions)
151+
{
152+
if (element.getValue().equalsIgnoreCase(extension))
153+
return index;
154+
155+
index++;
156+
}
157+
158+
return -1;
72159
}
73160

74161
@Override
@@ -79,24 +166,24 @@ protected ElementCache newElementCache()
79166

80167
protected class ElementCache extends LabKeyPage<ElementCache>.ElementCache
81168
{
82-
final WebElement registerNewAllowedFileExtension = PortalHelper.Locators.webPart("Register New Allowed File Extension")
83-
.findWhenNeeded(this);
84-
final Input extension = new Input(Locator.name("newValue").findWhenNeeded(registerNewAllowedFileExtension), getDriver());
85-
final WebElement saveExtension = Locator.lkButton("Save").findWhenNeeded(registerNewAllowedFileExtension);
169+
final WebElement registerNewPanel = PortalHelper.Locators.webPart("Register New Allowed File Extension").findWhenNeeded(this);
170+
final WebElement existingPanel = PortalHelper.Locators.webPart("Existing Allowed File Extensions").findWhenNeeded(this);
86171

87-
final WebElement existingAllowedFileExtensions = PortalHelper.Locators.webPart("Existing Allowed File Extensions")
88-
.findWhenNeeded(this);
89-
final WebElement updateExtension = Locator.lkButton("Save").findWhenNeeded(existingAllowedFileExtensions);
172+
final Input extension = new Input(Locator.id("newValueTextField").findWhenNeeded(registerNewPanel), getDriver());
173+
final WebElement saveExtension = Locator.lkButton("Save").findWhenNeeded(registerNewPanel);
90174

91-
final Input allowedExtension(String value)
92-
{
93-
return new Input(Locator.inputByIdContaining("existingValue").withAttribute("value", value)
94-
.findWhenNeeded(existingAllowedFileExtensions), getDriver());
95-
}
175+
final WebElement saveUpdateExtension = Locator.lkButton("Save").findWhenNeeded(existingPanel);
96176

97-
final WebElement deleteExtension(int index)
177+
List<Input> allowedExtensions()
98178
{
99-
return Locator.linkWithText("Delete").index(index).findWhenNeeded(existingAllowedFileExtensions);
179+
return Locator.inputByIdContaining("existingValue")
180+
.findElements(elementCache().existingPanel)
181+
.stream().map(el -> new Input(el, getDriver())).collect(Collectors.toList());
100182
}
183+
184+
final List<WebElement> deleteExtensions = Locator.linkWithText("Delete").findElements(existingPanel);
185+
186+
final WebElement deleteAll = Locator.linkWithText("Delete All").findWhenNeeded(existingPanel);
187+
101188
}
102189
}

0 commit comments

Comments
 (0)