From 3f4ac987e8fc767a8f0c3f0c066222f5706f4b2a Mon Sep 17 00:00:00 2001 From: vagisha Date: Tue, 4 Feb 2025 14:24:39 -0800 Subject: [PATCH 1/5] Added test for moving Skyline documents across LabKey folders. --- .../PanoramaPublicBaseTest.java | 13 ++ .../PanoramaPublicMoveSkyDocTest.java | 117 ++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java index 4cc09515..49485de4 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java @@ -202,6 +202,11 @@ private void setupSourceFolder(String projectName, String folderName, FolderType { setupSubfolder(projectName, folderName, folderType); // Create the subfolder + updatePermissions(projectName, folderName, adminUsers); + } + + private void updatePermissions(String projectName, String folderName, String[] adminUsers) + { ApiPermissionsHelper permissionsHelper = new ApiPermissionsHelper(this); _userHelper.ensureUsersExist(List.of(adminUsers)); for(String user: adminUsers) @@ -210,6 +215,14 @@ private void setupSourceFolder(String projectName, String folderName, FolderType } } + void setupSubfolder(String projectName, String parentFolderName, String folderName, FolderType folderType, String ... adminUsers) + { + _containerHelper.createSubfolder(projectName, parentFolderName, folderName, "Panorama", null, false); + selectFolderType(folderType); + + updatePermissions(projectName, parentFolderName + "/" + folderName, adminUsers); + } + void updateSubmitterAccountInfo(String lastName) { goToMyAccount(); diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java new file mode 100644 index 00000000..a469f8de --- /dev/null +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java @@ -0,0 +1,117 @@ +package org.labkey.test.tests.panoramapublic; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.labkey.test.BaseWebDriverTest; +import org.labkey.test.Locator; +import org.labkey.test.TestFileUtils; +import org.labkey.test.categories.External; +import org.labkey.test.categories.MacCossLabModules; +import org.labkey.test.components.CustomizeView; +import org.labkey.test.util.DataRegionTable; + +import static org.junit.Assert.fail; + + +@Category({External.class, MacCossLabModules.class}) +@BaseWebDriverTest.ClassTimeout(minutes = 5) +public class PanoramaPublicMoveSkyDocTest extends PanoramaPublicBaseTest +{ + private static final String SKY_FILE_1 = "MRMer.zip"; + private static final String SKY_FILE_2 = "MRMer_renamed_protein.zip"; + private static final String SKY_FILE_3 = "SmMolLibA.sky.zip"; + + @Test + public void testExperimentCopy() + { + String projectName = getProjectName(); + String sourceFolder = "SourceFolder"; + String sourceSubfolder = "SourceSubFolder"; + String targetFolder = "TargetFolder"; + + log("Creating source folder " + sourceFolder); + setupSourceFolder(projectName, sourceFolder, SUBMITTER); + log("Creating subfolder, " + sourceSubfolder + " in folder " + sourceFolder); + setupSubfolder(projectName, sourceFolder, sourceSubfolder, FolderType.Experiment, SUBMITTER); + + goToProjectHome(); + log("Creating target folder " + targetFolder); + setupSourceFolder(projectName, targetFolder, SUBMITTER); + + impersonate(SUBMITTER); + updateSubmitterAccountInfo("One"); + + goToProjectFolder(projectName, sourceFolder); + log("Importing " + SKY_FILE_1 + " in folder " + sourceFolder); + importData(SKY_FILE_1, 1); + goToDashboard(); + log("Moving " + SKY_FILE_1 + " FROM " + sourceFolder + " TO " + targetFolder); + moveDocument(SKY_FILE_1, targetFolder, 1); + + var skyDocSourceFolder = sourceFolder + "/" + sourceSubfolder; + goToProjectFolder(projectName, skyDocSourceFolder); + log("Importing " + SKY_FILE_2 + " in folder " + skyDocSourceFolder); + importData(SKY_FILE_2, 1); + goToDashboard(); + log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + targetFolder); + moveDocument(SKY_FILE_2, targetFolder, 2); + + goToProjectFolder(projectName, targetFolder); + log("Importing " + SKY_FILE_3 + " in folder " + skyDocSourceFolder); + importData(SKY_FILE_3, 3); + + log("Creating and submitting an experiment"); + String experimentTitle = "Experiment to test moving Skyline documents from other folders"; + var expWebPart = createExperimentCompleteMetadata(experimentTitle); + expWebPart.clickSubmit(); + String shortAccessLink = submitWithoutPXId(); + + // Copy the experiment to the Panorama Public project + var panoramaCopyFolder = "Copy of " + targetFolder; + log("Copying experiment to folder " + panoramaCopyFolder +" in the Panorama Public project"); + copyExperimentAndVerify(projectName, targetFolder, experimentTitle, panoramaCopyFolder, shortAccessLink); + goToProjectFolder(PANORAMA_PUBLIC, panoramaCopyFolder); + verifyRunFilePathRoot(SKY_FILE_1, PANORAMA_PUBLIC, panoramaCopyFolder); + verifyRunFilePathRoot(SKY_FILE_2, PANORAMA_PUBLIC, panoramaCopyFolder); + verifyRunFilePathRoot(SKY_FILE_3, PANORAMA_PUBLIC, panoramaCopyFolder); + } + + private void moveDocument(String skylineDocName, String targetFolder, int jobCount) + { + DataRegionTable table = new DataRegionTable.DataRegionFinder(getDriver()).withName("TargetedMSRuns").waitFor(); + table.checkCheckbox(0); + table.clickHeaderButton("Move"); + waitAndClickAndWait(Locator.linkWithText(targetFolder)); + waitForPipelineJobsToComplete(jobCount, false); + + goToDashboard(); + + // Verify that the document moved + table = new DataRegionTable.DataRegionFinder(getDriver()).withName("TargetedMSRuns").waitFor(); + int rowIndex = table.getRowIndex("File", skylineDocName); + if (rowIndex < 0) + fail("Unable to find row for moved Skyline document: " + skylineDocName); + + verifyRunFilePathRoot(skylineDocName, getProjectName(), targetFolder); + } + + private void verifyRunFilePathRoot(String skylineDocName, String projectName, String targetFolder) + { + // Verify that exp.run filePathRoot is set to the target folder + portalHelper.navigateToQuery("exp", "Runs"); + DataRegionTable queryGrid = new DataRegionTable("query", this); + CustomizeView view = queryGrid.openCustomizeGrid(); + view.showHiddenItems(); + view.addColumn("FilePathRoot"); + view.applyCustomView(); + int rowIndex = queryGrid.getRowIndex("Name", skylineDocName); + if (rowIndex < 0) + fail("Unable to find row for Skyline document in exp.Runs query grid: " + skylineDocName); + + var expectedFileRoot = TestFileUtils.getDefaultFileRoot(projectName + "/" + targetFolder).getPath(); + var filePathRoot = queryGrid.getDataAsText(rowIndex, "FilePathRoot"); + + Assert.assertEquals("Unexpected FilePathRoot ",expectedFileRoot, filePathRoot); + } +} From 41ffb43c634957df224aa51ca9cdea38383dcafa Mon Sep 17 00:00:00 2001 From: vagisha Date: Thu, 13 Feb 2025 11:01:02 -0800 Subject: [PATCH 2/5] Attempt to fix test failing on TeamCity. --- .../PanoramaPublicMoveSkyDocTest.java | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java index a469f8de..bcf9f7c1 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java @@ -6,9 +6,11 @@ import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; import org.labkey.test.TestFileUtils; +import org.labkey.test.TestTimeoutException; import org.labkey.test.categories.External; import org.labkey.test.categories.MacCossLabModules; import org.labkey.test.components.CustomizeView; +import org.labkey.test.util.APIContainerHelper; import org.labkey.test.util.DataRegionTable; import static org.junit.Assert.fail; @@ -22,42 +24,42 @@ public class PanoramaPublicMoveSkyDocTest extends PanoramaPublicBaseTest private static final String SKY_FILE_2 = "MRMer_renamed_protein.zip"; private static final String SKY_FILE_3 = "SmMolLibA.sky.zip"; + private static final String SOURCE_FOLDER = "SourceFolder"; + private static final String TARGET_FOLDER = "TargetFolder"; @Test public void testExperimentCopy() { String projectName = getProjectName(); - String sourceFolder = "SourceFolder"; String sourceSubfolder = "SourceSubFolder"; - String targetFolder = "TargetFolder"; - log("Creating source folder " + sourceFolder); - setupSourceFolder(projectName, sourceFolder, SUBMITTER); - log("Creating subfolder, " + sourceSubfolder + " in folder " + sourceFolder); - setupSubfolder(projectName, sourceFolder, sourceSubfolder, FolderType.Experiment, SUBMITTER); + log("Creating source folder " + SOURCE_FOLDER); + setupSourceFolder(projectName, SOURCE_FOLDER, SUBMITTER); + log("Creating subfolder, " + sourceSubfolder + " in folder " + SOURCE_FOLDER); + setupSubfolder(projectName, SOURCE_FOLDER, sourceSubfolder, FolderType.Experiment, SUBMITTER); goToProjectHome(); - log("Creating target folder " + targetFolder); - setupSourceFolder(projectName, targetFolder, SUBMITTER); + log("Creating target folder " + TARGET_FOLDER); + setupSourceFolder(projectName, TARGET_FOLDER, SUBMITTER); impersonate(SUBMITTER); updateSubmitterAccountInfo("One"); - goToProjectFolder(projectName, sourceFolder); - log("Importing " + SKY_FILE_1 + " in folder " + sourceFolder); + goToProjectFolder(projectName, SOURCE_FOLDER); + log("Importing " + SKY_FILE_1 + " in folder " + SOURCE_FOLDER); importData(SKY_FILE_1, 1); goToDashboard(); - log("Moving " + SKY_FILE_1 + " FROM " + sourceFolder + " TO " + targetFolder); - moveDocument(SKY_FILE_1, targetFolder, 1); + log("Moving " + SKY_FILE_1 + " FROM " + SOURCE_FOLDER + " TO " + TARGET_FOLDER); + moveDocument(SKY_FILE_1, TARGET_FOLDER, 1); - var skyDocSourceFolder = sourceFolder + "/" + sourceSubfolder; + var skyDocSourceFolder = SOURCE_FOLDER + "/" + sourceSubfolder; goToProjectFolder(projectName, skyDocSourceFolder); log("Importing " + SKY_FILE_2 + " in folder " + skyDocSourceFolder); importData(SKY_FILE_2, 1); goToDashboard(); - log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + targetFolder); - moveDocument(SKY_FILE_2, targetFolder, 2); + log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + TARGET_FOLDER); + moveDocument(SKY_FILE_2, TARGET_FOLDER, 2); - goToProjectFolder(projectName, targetFolder); + goToProjectFolder(projectName, TARGET_FOLDER); log("Importing " + SKY_FILE_3 + " in folder " + skyDocSourceFolder); importData(SKY_FILE_3, 3); @@ -68,9 +70,9 @@ public void testExperimentCopy() String shortAccessLink = submitWithoutPXId(); // Copy the experiment to the Panorama Public project - var panoramaCopyFolder = "Copy of " + targetFolder; + var panoramaCopyFolder = "Copy of " + TARGET_FOLDER; log("Copying experiment to folder " + panoramaCopyFolder +" in the Panorama Public project"); - copyExperimentAndVerify(projectName, targetFolder, experimentTitle, panoramaCopyFolder, shortAccessLink); + copyExperimentAndVerify(projectName, TARGET_FOLDER, experimentTitle, panoramaCopyFolder, shortAccessLink); goToProjectFolder(PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_1, PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_2, PANORAMA_PUBLIC, panoramaCopyFolder); @@ -114,4 +116,15 @@ private void verifyRunFilePathRoot(String skylineDocName, String projectName, St Assert.assertEquals("Unexpected FilePathRoot ",expectedFileRoot, filePathRoot); } + + @Override + protected void doCleanup(boolean afterTest) throws TestTimeoutException + { + String projectName = getProjectName(); + APIContainerHelper apiContainerHelper = new APIContainerHelper(this); + apiContainerHelper.deleteFolder(projectName, SOURCE_FOLDER); + apiContainerHelper.deleteFolder(projectName, TARGET_FOLDER); + + super.doCleanup(afterTest); + } } From 816fba807e216bf94c60e82b43614db282c74cbf Mon Sep 17 00:00:00 2001 From: vagisha Date: Thu, 13 Feb 2025 11:43:22 -0800 Subject: [PATCH 3/5] Do not fail if container cannot be deleted because it does not exist. --- .../tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java index bcf9f7c1..26571100 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java @@ -122,8 +122,8 @@ protected void doCleanup(boolean afterTest) throws TestTimeoutException { String projectName = getProjectName(); APIContainerHelper apiContainerHelper = new APIContainerHelper(this); - apiContainerHelper.deleteFolder(projectName, SOURCE_FOLDER); - apiContainerHelper.deleteFolder(projectName, TARGET_FOLDER); + apiContainerHelper.deleteContainer(projectName + "/" + SOURCE_FOLDER, afterTest, WAIT_FOR_PAGE); + apiContainerHelper.deleteContainer(projectName + "/" + TARGET_FOLDER, afterTest, WAIT_FOR_PAGE); super.doCleanup(afterTest); } From 10f18e6f55cb57bbb6333c3e90bc5eb9abd3d7de Mon Sep 17 00:00:00 2001 From: vagisha Date: Sat, 15 Feb 2025 19:42:43 -0800 Subject: [PATCH 4/5] Attempt to fix test failing on TeamCity. Move documents from project to another project instead of between subfolders of the same project. --- .../PanoramaPublicBaseTest.java | 10 +-- .../PanoramaPublicMoveSkyDocTest.java | 87 +++++++++++++------ 2 files changed, 65 insertions(+), 32 deletions(-) diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java index 49485de4..95d63f68 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicBaseTest.java @@ -308,7 +308,7 @@ private void submitForm() clickAndWait(Locator.linkWithText("Back to Experiment Details")); // Navigate to the experiment details page. } - void copyExperimentAndVerify(String projectName, String folderName, String experimentTitle, String destinationFolder, String shortAccessUrl) + void copyExperimentAndVerify(String projectName, @Nullable String folderName, String experimentTitle, String destinationFolder, String shortAccessUrl) { copyExperimentAndVerify(projectName, folderName, null, experimentTitle, null, false, true, destinationFolder, shortAccessUrl); } @@ -327,7 +327,7 @@ void makeCopy(String shortAccessUrl, String experimentTitle, String destinationF makeCopy(shortAccessUrl, experimentTitle, recopy, deleteOldCopy, destinationFolder, true); } - void copyExperimentAndVerify(String projectName, String folderName, @Nullable List subfolders, String experimentTitle, + void copyExperimentAndVerify(String projectName, @Nullable String folderName, @Nullable List subfolders, String experimentTitle, @Nullable Integer version, boolean recopy, boolean deleteOldCopy, String destinationFolder, String shortAccessUrl) { @@ -335,7 +335,7 @@ void copyExperimentAndVerify(String projectName, String folderName, @Nullable Li destinationFolder, shortAccessUrl, true); } - void copyExperimentAndVerify(String projectName, String folderName, @Nullable List subfolders, String experimentTitle, + void copyExperimentAndVerify(String projectName, @Nullable String folderName, @Nullable List subfolders, String experimentTitle, @Nullable Integer version, boolean recopy, boolean deleteOldCopy, String destinationFolder, String shortAccessUrl, boolean symlinks) { @@ -408,7 +408,7 @@ protected final void uncheck(String label) } } - private void verifyCopy(String shortAccessUrl, String experimentTitle, @Nullable Integer version, String projectName, String folderName, List subfolders, boolean recopy) + private void verifyCopy(String shortAccessUrl, String experimentTitle, @Nullable Integer version, String projectName, @Nullable String folderName, List subfolders, boolean recopy) { // Verify the copy goToProjectHome(PANORAMA_PUBLIC); @@ -456,7 +456,7 @@ private void verifyCopy(String shortAccessUrl, String experimentTitle, @Nullable text += "\nEmail: " + REVIEWER_PREFIX; } String messageText = new BodyWebPart(getDriver(), "View Message").getComponentElement().getText(); - var srcFolderTxt = "Source folder: " + "/" + projectName + "/" + folderName; + var srcFolderTxt = "Source folder: " + "/" + projectName + (folderName == null ? "" : "/" + folderName); assertTextPresent(new TextSearcher(messageText), text, srcFolderTxt); // Unescaped special Markdown characters in the message may cause the password to render incorrectly. diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java index 26571100..b3dd903c 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java @@ -1,6 +1,8 @@ package org.labkey.test.tests.panoramapublic; +import org.jetbrains.annotations.Nullable; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import org.labkey.test.BaseWebDriverTest; @@ -11,7 +13,11 @@ import org.labkey.test.categories.MacCossLabModules; import org.labkey.test.components.CustomizeView; import org.labkey.test.util.APIContainerHelper; +import org.labkey.test.util.ApiPermissionsHelper; import org.labkey.test.util.DataRegionTable; +import org.labkey.test.util.PermissionsHelper; + +import java.util.List; import static org.junit.Assert.fail; @@ -24,43 +30,70 @@ public class PanoramaPublicMoveSkyDocTest extends PanoramaPublicBaseTest private static final String SKY_FILE_2 = "MRMer_renamed_protein.zip"; private static final String SKY_FILE_3 = "SmMolLibA.sky.zip"; - private static final String SOURCE_FOLDER = "SourceFolder"; - private static final String TARGET_FOLDER = "TargetFolder"; + private static final String SOURCE_PROJECT = "MoveSkyDoc_SourceFolder"; + private static final String TARGET_PROJECT = "MoveSkyDoc_TargetFolder"; + + @BeforeClass + public static void initSourceAndTargetProjects() + { + PanoramaPublicMoveSkyDocTest test = (PanoramaPublicMoveSkyDocTest) getCurrentTest(); + test.doInit(); + } + + private void doInit() + { + log("Creating source project"); + setUpFolder(SOURCE_PROJECT, FolderType.Experiment); + + log("Creating target project"); + setUpFolder(TARGET_PROJECT, FolderType.Experiment); + } + @Test public void testExperimentCopy() { String projectName = getProjectName(); String sourceSubfolder = "SourceSubFolder"; - log("Creating source folder " + SOURCE_FOLDER); - setupSourceFolder(projectName, SOURCE_FOLDER, SUBMITTER); - log("Creating subfolder, " + sourceSubfolder + " in folder " + SOURCE_FOLDER); - setupSubfolder(projectName, SOURCE_FOLDER, sourceSubfolder, FolderType.Experiment, SUBMITTER); + ApiPermissionsHelper permissionsHelper = new ApiPermissionsHelper(this); + _userHelper.ensureUsersExist(List.of(SUBMITTER)); + + goToProjectHome(SOURCE_PROJECT); + permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", + PermissionsHelper.MemberType.user, SOURCE_PROJECT); + + goToProjectHome(TARGET_PROJECT); + permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", + PermissionsHelper.MemberType.user, TARGET_PROJECT); + + + log("Creating subfolder, " + sourceSubfolder + " in project " + SOURCE_PROJECT); + setupSubfolder(SOURCE_PROJECT, sourceSubfolder, FolderType.Experiment); + goToProjectFolder(SOURCE_PROJECT, sourceSubfolder); + permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", + PermissionsHelper.MemberType.user, SOURCE_PROJECT + "/" + sourceSubfolder); - goToProjectHome(); - log("Creating target folder " + TARGET_FOLDER); - setupSourceFolder(projectName, TARGET_FOLDER, SUBMITTER); impersonate(SUBMITTER); updateSubmitterAccountInfo("One"); - goToProjectFolder(projectName, SOURCE_FOLDER); - log("Importing " + SKY_FILE_1 + " in folder " + SOURCE_FOLDER); + goToProjectHome(SOURCE_PROJECT); + log("Importing " + SKY_FILE_1 + " in project " + SOURCE_PROJECT); importData(SKY_FILE_1, 1); goToDashboard(); - log("Moving " + SKY_FILE_1 + " FROM " + SOURCE_FOLDER + " TO " + TARGET_FOLDER); - moveDocument(SKY_FILE_1, TARGET_FOLDER, 1); + log("Moving " + SKY_FILE_1 + " FROM " + SOURCE_PROJECT + " TO " + TARGET_PROJECT); + moveDocument(SKY_FILE_1, TARGET_PROJECT, 1); - var skyDocSourceFolder = SOURCE_FOLDER + "/" + sourceSubfolder; - goToProjectFolder(projectName, skyDocSourceFolder); + var skyDocSourceFolder = SOURCE_PROJECT + "/" + sourceSubfolder; + goToProjectFolder(SOURCE_PROJECT, sourceSubfolder); log("Importing " + SKY_FILE_2 + " in folder " + skyDocSourceFolder); importData(SKY_FILE_2, 1); goToDashboard(); - log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + TARGET_FOLDER); - moveDocument(SKY_FILE_2, TARGET_FOLDER, 2); + log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + TARGET_PROJECT); + moveDocument(SKY_FILE_2, TARGET_PROJECT, 2); - goToProjectFolder(projectName, TARGET_FOLDER); - log("Importing " + SKY_FILE_3 + " in folder " + skyDocSourceFolder); + goToProjectHome(TARGET_PROJECT); + log("Importing " + SKY_FILE_3 + " in project " + TARGET_PROJECT); importData(SKY_FILE_3, 3); log("Creating and submitting an experiment"); @@ -70,9 +103,9 @@ public void testExperimentCopy() String shortAccessLink = submitWithoutPXId(); // Copy the experiment to the Panorama Public project - var panoramaCopyFolder = "Copy of " + TARGET_FOLDER; + var panoramaCopyFolder = "Copy of " + TARGET_PROJECT; log("Copying experiment to folder " + panoramaCopyFolder +" in the Panorama Public project"); - copyExperimentAndVerify(projectName, TARGET_FOLDER, experimentTitle, panoramaCopyFolder, shortAccessLink); + copyExperimentAndVerify(TARGET_PROJECT, null, experimentTitle, panoramaCopyFolder, shortAccessLink); goToProjectFolder(PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_1, PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_2, PANORAMA_PUBLIC, panoramaCopyFolder); @@ -95,10 +128,10 @@ private void moveDocument(String skylineDocName, String targetFolder, int jobCou if (rowIndex < 0) fail("Unable to find row for moved Skyline document: " + skylineDocName); - verifyRunFilePathRoot(skylineDocName, getProjectName(), targetFolder); + verifyRunFilePathRoot(skylineDocName, targetFolder, null); } - private void verifyRunFilePathRoot(String skylineDocName, String projectName, String targetFolder) + private void verifyRunFilePathRoot(String skylineDocName, String projectName, @Nullable String targetFolder) { // Verify that exp.run filePathRoot is set to the target folder portalHelper.navigateToQuery("exp", "Runs"); @@ -111,7 +144,8 @@ private void verifyRunFilePathRoot(String skylineDocName, String projectName, St if (rowIndex < 0) fail("Unable to find row for Skyline document in exp.Runs query grid: " + skylineDocName); - var expectedFileRoot = TestFileUtils.getDefaultFileRoot(projectName + "/" + targetFolder).getPath(); + var containerPath = projectName + (targetFolder != null ? "/" + targetFolder : ""); + var expectedFileRoot = TestFileUtils.getDefaultFileRoot(containerPath).getPath(); var filePathRoot = queryGrid.getDataAsText(rowIndex, "FilePathRoot"); Assert.assertEquals("Unexpected FilePathRoot ",expectedFileRoot, filePathRoot); @@ -120,10 +154,9 @@ private void verifyRunFilePathRoot(String skylineDocName, String projectName, St @Override protected void doCleanup(boolean afterTest) throws TestTimeoutException { - String projectName = getProjectName(); APIContainerHelper apiContainerHelper = new APIContainerHelper(this); - apiContainerHelper.deleteContainer(projectName + "/" + SOURCE_FOLDER, afterTest, WAIT_FOR_PAGE); - apiContainerHelper.deleteContainer(projectName + "/" + TARGET_FOLDER, afterTest, WAIT_FOR_PAGE); + apiContainerHelper.deleteProject(SOURCE_PROJECT, afterTest); + apiContainerHelper.deleteProject(TARGET_PROJECT, afterTest); super.doCleanup(afterTest); } From c70bd278e99c82ff00f90f47d6e4c58db15410d1 Mon Sep 17 00:00:00 2001 From: vagisha Date: Sun, 16 Feb 2025 11:43:37 -0800 Subject: [PATCH 5/5] Reverted back to using test folder with tricky characters --- .../PanoramaPublicMoveSkyDocTest.java | 94 +++++-------------- 1 file changed, 24 insertions(+), 70 deletions(-) diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java index b3dd903c..a469f8de 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaPublicMoveSkyDocTest.java @@ -1,23 +1,15 @@ package org.labkey.test.tests.panoramapublic; -import org.jetbrains.annotations.Nullable; import org.junit.Assert; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; import org.labkey.test.TestFileUtils; -import org.labkey.test.TestTimeoutException; import org.labkey.test.categories.External; import org.labkey.test.categories.MacCossLabModules; import org.labkey.test.components.CustomizeView; -import org.labkey.test.util.APIContainerHelper; -import org.labkey.test.util.ApiPermissionsHelper; import org.labkey.test.util.DataRegionTable; -import org.labkey.test.util.PermissionsHelper; - -import java.util.List; import static org.junit.Assert.fail; @@ -30,70 +22,43 @@ public class PanoramaPublicMoveSkyDocTest extends PanoramaPublicBaseTest private static final String SKY_FILE_2 = "MRMer_renamed_protein.zip"; private static final String SKY_FILE_3 = "SmMolLibA.sky.zip"; - private static final String SOURCE_PROJECT = "MoveSkyDoc_SourceFolder"; - private static final String TARGET_PROJECT = "MoveSkyDoc_TargetFolder"; - - @BeforeClass - public static void initSourceAndTargetProjects() - { - PanoramaPublicMoveSkyDocTest test = (PanoramaPublicMoveSkyDocTest) getCurrentTest(); - test.doInit(); - } - - private void doInit() - { - log("Creating source project"); - setUpFolder(SOURCE_PROJECT, FolderType.Experiment); - - log("Creating target project"); - setUpFolder(TARGET_PROJECT, FolderType.Experiment); - } - @Test public void testExperimentCopy() { String projectName = getProjectName(); + String sourceFolder = "SourceFolder"; String sourceSubfolder = "SourceSubFolder"; + String targetFolder = "TargetFolder"; - ApiPermissionsHelper permissionsHelper = new ApiPermissionsHelper(this); - _userHelper.ensureUsersExist(List.of(SUBMITTER)); - - goToProjectHome(SOURCE_PROJECT); - permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", - PermissionsHelper.MemberType.user, SOURCE_PROJECT); - - goToProjectHome(TARGET_PROJECT); - permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", - PermissionsHelper.MemberType.user, TARGET_PROJECT); - - - log("Creating subfolder, " + sourceSubfolder + " in project " + SOURCE_PROJECT); - setupSubfolder(SOURCE_PROJECT, sourceSubfolder, FolderType.Experiment); - goToProjectFolder(SOURCE_PROJECT, sourceSubfolder); - permissionsHelper.addMemberToRole(SUBMITTER, "Folder Administrator", - PermissionsHelper.MemberType.user, SOURCE_PROJECT + "/" + sourceSubfolder); + log("Creating source folder " + sourceFolder); + setupSourceFolder(projectName, sourceFolder, SUBMITTER); + log("Creating subfolder, " + sourceSubfolder + " in folder " + sourceFolder); + setupSubfolder(projectName, sourceFolder, sourceSubfolder, FolderType.Experiment, SUBMITTER); + goToProjectHome(); + log("Creating target folder " + targetFolder); + setupSourceFolder(projectName, targetFolder, SUBMITTER); impersonate(SUBMITTER); updateSubmitterAccountInfo("One"); - goToProjectHome(SOURCE_PROJECT); - log("Importing " + SKY_FILE_1 + " in project " + SOURCE_PROJECT); + goToProjectFolder(projectName, sourceFolder); + log("Importing " + SKY_FILE_1 + " in folder " + sourceFolder); importData(SKY_FILE_1, 1); goToDashboard(); - log("Moving " + SKY_FILE_1 + " FROM " + SOURCE_PROJECT + " TO " + TARGET_PROJECT); - moveDocument(SKY_FILE_1, TARGET_PROJECT, 1); + log("Moving " + SKY_FILE_1 + " FROM " + sourceFolder + " TO " + targetFolder); + moveDocument(SKY_FILE_1, targetFolder, 1); - var skyDocSourceFolder = SOURCE_PROJECT + "/" + sourceSubfolder; - goToProjectFolder(SOURCE_PROJECT, sourceSubfolder); + var skyDocSourceFolder = sourceFolder + "/" + sourceSubfolder; + goToProjectFolder(projectName, skyDocSourceFolder); log("Importing " + SKY_FILE_2 + " in folder " + skyDocSourceFolder); importData(SKY_FILE_2, 1); goToDashboard(); - log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + TARGET_PROJECT); - moveDocument(SKY_FILE_2, TARGET_PROJECT, 2); + log("Moving " + SKY_FILE_2 + " FROM " + skyDocSourceFolder + "TO " + targetFolder); + moveDocument(SKY_FILE_2, targetFolder, 2); - goToProjectHome(TARGET_PROJECT); - log("Importing " + SKY_FILE_3 + " in project " + TARGET_PROJECT); + goToProjectFolder(projectName, targetFolder); + log("Importing " + SKY_FILE_3 + " in folder " + skyDocSourceFolder); importData(SKY_FILE_3, 3); log("Creating and submitting an experiment"); @@ -103,9 +68,9 @@ public void testExperimentCopy() String shortAccessLink = submitWithoutPXId(); // Copy the experiment to the Panorama Public project - var panoramaCopyFolder = "Copy of " + TARGET_PROJECT; + var panoramaCopyFolder = "Copy of " + targetFolder; log("Copying experiment to folder " + panoramaCopyFolder +" in the Panorama Public project"); - copyExperimentAndVerify(TARGET_PROJECT, null, experimentTitle, panoramaCopyFolder, shortAccessLink); + copyExperimentAndVerify(projectName, targetFolder, experimentTitle, panoramaCopyFolder, shortAccessLink); goToProjectFolder(PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_1, PANORAMA_PUBLIC, panoramaCopyFolder); verifyRunFilePathRoot(SKY_FILE_2, PANORAMA_PUBLIC, panoramaCopyFolder); @@ -128,10 +93,10 @@ private void moveDocument(String skylineDocName, String targetFolder, int jobCou if (rowIndex < 0) fail("Unable to find row for moved Skyline document: " + skylineDocName); - verifyRunFilePathRoot(skylineDocName, targetFolder, null); + verifyRunFilePathRoot(skylineDocName, getProjectName(), targetFolder); } - private void verifyRunFilePathRoot(String skylineDocName, String projectName, @Nullable String targetFolder) + private void verifyRunFilePathRoot(String skylineDocName, String projectName, String targetFolder) { // Verify that exp.run filePathRoot is set to the target folder portalHelper.navigateToQuery("exp", "Runs"); @@ -144,20 +109,9 @@ private void verifyRunFilePathRoot(String skylineDocName, String projectName, @N if (rowIndex < 0) fail("Unable to find row for Skyline document in exp.Runs query grid: " + skylineDocName); - var containerPath = projectName + (targetFolder != null ? "/" + targetFolder : ""); - var expectedFileRoot = TestFileUtils.getDefaultFileRoot(containerPath).getPath(); + var expectedFileRoot = TestFileUtils.getDefaultFileRoot(projectName + "/" + targetFolder).getPath(); var filePathRoot = queryGrid.getDataAsText(rowIndex, "FilePathRoot"); Assert.assertEquals("Unexpected FilePathRoot ",expectedFileRoot, filePathRoot); } - - @Override - protected void doCleanup(boolean afterTest) throws TestTimeoutException - { - APIContainerHelper apiContainerHelper = new APIContainerHelper(this); - apiContainerHelper.deleteProject(SOURCE_PROJECT, afterTest); - apiContainerHelper.deleteProject(TARGET_PROJECT, afterTest); - - super.doCleanup(afterTest); - } }