|
34 | 34 | import org.labkey.test.categories.Hosting; |
35 | 35 | import org.labkey.test.components.ext4.Window; |
36 | 36 | import org.labkey.test.pages.FolderManagementFolderTree; |
| 37 | +import org.labkey.test.pages.admin.FolderAliasesPage; |
37 | 38 | import org.labkey.test.pages.admin.FolderManagementPage; |
38 | 39 | import org.labkey.test.pages.admin.ReorderFoldersPage; |
39 | 40 | import org.labkey.test.pages.list.BeginPage; |
|
44 | 45 | import org.labkey.test.util.LoggedParam; |
45 | 46 | import org.labkey.test.util.PasswordUtil; |
46 | 47 | import org.labkey.test.util.PortalHelper; |
| 48 | +import org.labkey.test.util.WikiHelper; |
47 | 49 | import org.labkey.test.util.WorkbookHelper; |
48 | 50 | import org.openqa.selenium.WebElement; |
49 | 51 |
|
| 52 | +import java.util.ArrayList; |
50 | 53 | import java.util.Arrays; |
51 | 54 | import java.util.HashMap; |
52 | 55 | import java.util.HashSet; |
@@ -99,6 +102,70 @@ public static void testSetup() |
99 | 102 | init.moveTestProjectToTop(); |
100 | 103 | } |
101 | 104 |
|
| 105 | + @Test |
| 106 | + public void testAliases() |
| 107 | + { |
| 108 | + String firstContent = "This is the first folder"; |
| 109 | + String secondContent = "This is the second folder"; |
| 110 | + String originalName1 = "OriginalName1" + TRICKY_CHARACTERS_FOR_PROJECT_NAMES; |
| 111 | + String originalName2 = "OriginalName2" + TRICKY_CHARACTERS_FOR_PROJECT_NAMES; |
| 112 | + String newName = "NewName" + TRICKY_CHARACTERS_FOR_PROJECT_NAMES; |
| 113 | + String additionalAlias = "AdditionalAlias" + TRICKY_CHARACTERS_FOR_PROJECT_NAMES; |
| 114 | + |
| 115 | + // Create folders and give them a wiki as content so we can be sure we land in the right spot when following an alias |
| 116 | + _containerHelper.createSubfolder(getProjectName(), originalName1); |
| 117 | + createWikiAndAddToPortal(firstContent, originalName1); |
| 118 | + _containerHelper.createSubfolder(getProjectName(), originalName2); |
| 119 | + createWikiAndAddToPortal(secondContent, originalName2); |
| 120 | + |
| 121 | + _containerHelper.renameFolder(getProjectName(), originalName1, newName, true); |
| 122 | + navigateToFolder(getProjectName(), newName); |
| 123 | + assertTextPresent(firstContent); |
| 124 | + |
| 125 | + // Ensure the alias was created and works |
| 126 | + beginAt(WebTestHelper.buildURL("project", getProjectName() + "/" + originalName1 , "begin")); |
| 127 | + assertTextPresent(firstContent); |
| 128 | + FolderAliasesPage aliasesPage = goToFolderManagement().goToAliases(); |
| 129 | + List<String> aliases = new ArrayList<>(aliasesPage.getAliases()); |
| 130 | + // Ensure it's being saved as lower case |
| 131 | + assertEquals(Arrays.asList(("/" + getProjectName() + "/" + originalName1).toLowerCase()), aliases); |
| 132 | + aliases.add("/" + getProjectName() + "/" + additionalAlias); |
| 133 | + aliasesPage.setAliases(aliases); |
| 134 | + aliasesPage.clickSave(); |
| 135 | + |
| 136 | + beginAt(WebTestHelper.buildURL("project", getProjectName() + "/" + originalName1 , "begin")); |
| 137 | + assertTextPresent(firstContent); |
| 138 | + beginAt(WebTestHelper.buildURL("project", getProjectName() + "/" + additionalAlias , "begin")); |
| 139 | + assertTextPresent(firstContent); |
| 140 | + |
| 141 | + // Steal the alias in another folder |
| 142 | + navigateToFolder(getProjectName(), originalName2); |
| 143 | + assertTextPresent(secondContent); |
| 144 | + aliasesPage = goToFolderManagement().goToAliases(); |
| 145 | + aliasesPage.setAliases(Arrays.asList("/" + getProjectName() + "/" + additionalAlias)); |
| 146 | + aliasesPage.clickSave(); |
| 147 | + beginAt(WebTestHelper.buildURL("project", getProjectName() + "/" + additionalAlias , "begin")); |
| 148 | + assertTextPresent(secondContent); |
| 149 | + } |
| 150 | + |
| 151 | + private void createWikiAndAddToPortal(String body, String folderName) |
| 152 | + { |
| 153 | + navigateToFolder(getProjectName(), folderName); |
| 154 | + WikiHelper wikiHelper = new WikiHelper(this); |
| 155 | + wikiHelper.createNewWikiPage("HTML"); |
| 156 | + String pageName = "ReferencePoint"; |
| 157 | + wikiHelper.setWikiName(pageName); |
| 158 | + wikiHelper.setWikiTitle(pageName); |
| 159 | + wikiHelper.setWikiBody(body); |
| 160 | + wikiHelper.saveWikiPage(); |
| 161 | + |
| 162 | + navigateToFolder(getProjectName(), folderName); |
| 163 | + PortalHelper portalHelper = new PortalHelper(this); |
| 164 | + portalHelper.addBodyWebPart("Wiki"); |
| 165 | + wikiHelper.clickChooseAPage(); |
| 166 | + wikiHelper.saveChosenPage(); |
| 167 | + } |
| 168 | + |
102 | 169 | @LogMethod |
103 | 170 | private void moveTestProjectToTop() // todo: use FolderManagementPage, ReorderFoldersPage |
104 | 171 | { |
|
0 commit comments