diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index d9329aca4b..0000000000 --- a/pull_request_template.md +++ /dev/null @@ -1,14 +0,0 @@ -#### Rationale - - -#### Related Pull Requests -- - -#### Changes -- - - diff --git a/src/org/labkey/test/BaseWebDriverTest.java b/src/org/labkey/test/BaseWebDriverTest.java index 8799899942..11e7412a89 100644 --- a/src/org/labkey/test/BaseWebDriverTest.java +++ b/src/org/labkey/test/BaseWebDriverTest.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.hc.core5.http.HttpStatus; import org.awaitility.Awaitility; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; @@ -303,8 +304,10 @@ private static Class getCurrentTestClass() return SingletonWebDriver.getInstance().getWebDriver(); } + @Contract(pure = true) protected abstract String getProjectName(); + @Contract(pure = true) public final @Nullable String getPrimaryTestProject() { return getProjectName(); diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index b742bde15c..27e2aaafc9 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -205,6 +205,7 @@ public WebDriverWrapper() _ext4Helper = new Ext4Helper(this); } + @Contract(pure = true) @NotNull public final WebDriver getDriver() { @@ -1352,9 +1353,10 @@ public String getCurrentProject() return "/"; //root } + @Contract(pure = true) public String getCurrentContainerPath() { - return (String)executeScript("return LABKEY.container.path;"); + return (String) executeScript("return LABKEY.container.path;"); } public WhoAmIResponse whoAmI() diff --git a/src/org/labkey/test/WebTestHelper.java b/src/org/labkey/test/WebTestHelper.java index 0313b07300..9b9bf3fb4a 100644 --- a/src/org/labkey/test/WebTestHelper.java +++ b/src/org/labkey/test/WebTestHelper.java @@ -494,6 +494,42 @@ public static String getContextPath() } } + /** + * Convenience method to build an app url for the given controller + * @see URLBuilder + * + * @param containerPath Often getProjectName() or getCurrentContainerPath() + * @param controller Name of the controller + * @param parts The app resource path + * @return A url string that can be used for navigation. + */ + public static String buildAppURL(String containerPath, String controller, Object... parts) + { + return buildAppURL(containerPath, controller, null, parts).trim(); + } + + /** + * Convenience method to build an app url. Assumes Sample Manager app (samplemanager-app.view) + * + * @param containerPath Often getProjectName() or getCurrentContainerPath() + * @param controllerName Name of the controller + * @param params Any params that are part of the app query. {@link URLBuilder#setSecondaryQuery(Map)} + * @param parts The app resource path + * @return A url string that can be used for navigation. + * @see URLBuilder + */ + public static String buildAppURL(String containerPath, String controllerName, Map params, Object... parts) + { + if (StringUtils.isBlank(containerPath)) + { + throw new IllegalArgumentException("Invalid app containerPath: " + containerPath); + } + return new URLBuilder(controllerName, "app", containerPath) + .setAppResourcePath(parts) + .setSecondaryQuery(params) + .buildURL(); + } + public static String buildURL(String controller, String action) { return buildURL(controller, null, action, Collections.emptyMap()); diff --git a/src/org/labkey/test/tests/BaseAppTest.java b/src/org/labkey/test/tests/BaseAppTest.java index 58ef66abf4..fc45911d8a 100644 --- a/src/org/labkey/test/tests/BaseAppTest.java +++ b/src/org/labkey/test/tests/BaseAppTest.java @@ -1,8 +1,26 @@ package org.labkey.test.tests; +import org.jetbrains.annotations.Contract; import org.labkey.test.BaseWebDriverTest; +import org.labkey.test.WebTestHelper; + +import java.util.Map; public abstract class BaseAppTest extends BaseWebDriverTest { + @Contract(pure = true) public abstract String getAppControllerName(); + + @Contract(pure = true) + public String buildAppURL(String containerPath, Object... parts) + { + return WebTestHelper.buildAppURL(containerPath, getAppControllerName(), parts); + } + + @Contract(pure = true) + public String buildAppURL(String containerPath, Map params, Object... parts) + { + return WebTestHelper.buildAppURL(containerPath, getAppControllerName(), params, parts); + } + }