From 8fb0a1e2cfe4908f939a6a35f624ee45af2bbaaf Mon Sep 17 00:00:00 2001 From: labkey-sweta Date: Mon, 3 Mar 2025 23:28:35 -0800 Subject: [PATCH 1/6] SND Query Provisioned snapshot automation test --- .../org/labkey/test/tests/snd/SNDTest.java | 119 ++++++++++++++++-- snd/webapp/snd/test/data.js | 2 +- 2 files changed, 107 insertions(+), 14 deletions(-) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index 1e01a9453..a0c4fcaec 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -16,6 +16,7 @@ package org.labkey.test.tests.snd; +import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; @@ -56,7 +57,10 @@ import org.labkey.test.util.ApiPermissionsHelper; import org.labkey.test.util.DataRegionTable; import org.labkey.test.util.Maps; +import org.labkey.test.util.OptionalFeatureHelper; +import org.labkey.test.util.PortalHelper; import org.labkey.test.util.SqlserverOnlyTest; +import org.labkey.test.util.StudyHelper; import org.labkey.test.util.core.webdav.WebDavUploadHelper; import org.openqa.selenium.WebElement; @@ -107,6 +111,7 @@ public class SNDTest extends BaseWebDriverTest implements SqlserverOnlyTest private static final int TEST_CATEGORY_ID2 = 51; private static final int TEST_CATEGORY_ID3 = 52; private static final int TEST_CATEGORY_ID4 = 53; + private static final int TEST_CATEGORY_ID5 = 54; private static final int TEST_SUPER_PKG_START_ID1 = 130; private static final int TEST_SUPER_PKG_START_ID2 = 140; private static final int TEST_SUPER_PKG_START_ID3 = 150; @@ -141,6 +146,8 @@ public class SNDTest extends BaseWebDriverTest implements SqlserverOnlyTest private static final String UITEST_PROJECT_SUBPKG2 = "Vet Comment"; private static final String UITEST_PROJECT_SUBPKG3 = "Ketamine Sedation"; + private static final String STUDY_NAME = "Query provisioned snapshot test"; + private static final String CREATEDOMAINSAPI ="LABKEY.Domain.create({\n" + " domainGroup: 'test', \n" + " domainKind: 'SND', \n" + @@ -553,7 +560,12 @@ private static String getPackageWithId(String packageId) " 'Description': 'Weight', \n"+ " 'Active': true, \n"+ " 'Comment': 'This is a weight' \n"+ - " },{ \n"+ + " },{ \n" + + " 'CategoryId': " + TEST_CATEGORY_ID5 + " ,\n" + + " 'Description': 'Sodium', \n" + + " 'Active': true, \n" + + " 'Comment': 'This is Sodium' \n" + + " },{ \n"+ " 'CategoryId': " + TEST_CATEGORY_ID4 + ",\n"+ " 'Description': 'Vitals', \n"+ " 'Active': true, \n"+ @@ -870,8 +882,7 @@ public void checkLinks() @BeforeClass public static void setupProject() { - SNDTest init = (SNDTest) getCurrentTest(); - + SNDTest init = getCurrentTest(); init.doSetup(); } @@ -879,7 +890,8 @@ private void doSetup() { _containerHelper.createProject(getProjectName(), "Collaboration"); goToProjectHome(); - _containerHelper.enableModules(Arrays.asList("SND")); + _containerHelper.enableModules(Arrays.asList("SND", "Study")); + _containerHelper.createSubfolder(getProjectName(), getProjectName(), TEST1SUBFOLDER, "Collaboration", new String[]{"SND"}); setupTest1Project(); @@ -2089,8 +2101,7 @@ public void reviseProjectViaUI() throws Exception assertFalse("Unassigned package found assigned.", viewPage.isAssignedPackagePresent(UITEST_PROJECT_SUBPKG2)); } - @Test - public void verifyTestFrameworkAPITests() + private boolean runTestsInAPIFrameWork() { log("Launching the Testing framework"); goToProjectHome(); @@ -2101,11 +2112,10 @@ public void verifyTestFrameworkAPITests() clickButton("Run tests", 0); waitForText("Total tests:", 1, WAIT_FOR_PAGE); - log("Verifying no test failed"); - assertTextPresent("Complete","Failed tests: 0"); + return isTextPresent("Complete","Failed tests: 0"); } - private String getPerimissionTableValue(int row, int col) + private String getPermissionTableValue(int row, int col) { List els = ((Locator.XPathLocator)getSimpleTableCell(Locator.id("category-security"), row, col)).child("div").child("a").child("input").findElements(getDriver()); if (els.size() > 0) @@ -2157,7 +2167,7 @@ public void categoryPermissionsUI() throws Exception { if (categories.contains(getTableCellText(Locator.id("category-security"), i, 0))) { - value = getPerimissionTableValue(i, 1); + value = getPermissionTableValue(i, 1); assertNotNull(value); assertTrue(value.equals("None")); categoryRows.add(i); @@ -2169,7 +2179,7 @@ public void categoryPermissionsUI() throws Exception for (Integer r : categoryRows) { - value = getPerimissionTableValue(r, 1); + value = getPermissionTableValue(r, 1); assertNotNull(value); assertTrue(value.equals("SND Reader")); } @@ -2179,7 +2189,7 @@ public void categoryPermissionsUI() throws Exception for (int k = 0; k < categoryRows.size(); k++) { - value = getPerimissionTableValue(categoryRows.get(k), 1); + value = getPermissionTableValue(categoryRows.get(k), 1); assertNotNull(value); assertTrue(value.equals("None")); click(getSimpleTableCell(Locator.id("category-security"), categoryRows.get(k), 1)); @@ -2190,13 +2200,96 @@ public void categoryPermissionsUI() throws Exception for (int j = 0; j < categoryRows.size(); j++) { - value = getPerimissionTableValue(categoryRows.get(j), 1); + value = getPermissionTableValue(categoryRows.get(j), 1); assertNotNull(value); assertTrue(value.equals(permissions.get(j))); } } + @Test + public void testQueryProvisionedSnapshot() + { + String SOURCE_QUERY_NAME = "SND: Source query"; + String SNAPSHOT_NAME = SOURCE_QUERY_NAME + " Snapshot"; + String SOURCE_QUERY = "SELECT\n" + + "lsid AS _key,\n" + + "SubjectId AS participantid,\n" + + "date,\n" + + "qcstate,\n" + + "lsid,\n" + + "amount,\n" + + "units,\n" + + "kit_type\n" + + "FROM SND.Categories.Sodium\n"; + + String UPDATED_SOURCE_QUERY = "SELECT\n" + + "lsid AS _key,\n" + + "SubjectId AS participantid,\n" + + "date,\n" + + "qcstate,\n" + + "lsid,\n" + + "'8976' AS amount,\n" + + "units,\n" + + "kit_type\n" + + "FROM SND.Categories.Sodium"; + + log("Run the tests from the framework for set up"); + if (!runTestsInAPIFrameWork()) + Assert.fail("Tests failed in the framework"); + + log("Enable Allow query based dataset snapshots"); + OptionalFeatureHelper.enableOptionalFeature(createDefaultConnection(), "queryBasedDatasets"); + + log("Enable study module and create continuous study"); + goToProjectHome(); + goToManageStudy(); + _studyHelper.startCreateStudy() + .setTimepointType(StudyHelper.TimepointType.CONTINUOUS) + .createStudy(); + + log("Adding dataset webpart"); + goToProjectHome(); + PortalHelper _portalHelper = new PortalHelper(getDriver()); + _portalHelper.addBodyWebPart("Datasets"); + + log("Create source query from study"); + goToSchemaBrowser(); + createNewQuery("study"); + setFormElement(Locator.id("ff_newQueryName"), SOURCE_QUERY_NAME); + selectOptionByText(Locator.name("ff_baseTableName"), "DataSets"); + clickButton("Create and Edit Source"); + setCodeEditorValue("queryText", SOURCE_QUERY); + clickButton("Save & Finish"); + + log("Create the snapshot"); + DataRegionTable queryTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("query").waitFor(); + queryTable.goToReport("Create Query Snapshot"); + checkCheckbox(Locator.name("queryDataset")); + clickButton("Create Snapshot"); + + log("Verify the dataset snapshot"); + goToProjectHome(); + clickAndWait(Locator.linkWithText(SNAPSHOT_NAME)); + DataRegionTable dataRegionTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("Dataset").waitFor(); + Assert.assertEquals("Incorrect number of rows", 3, dataRegionTable.getDataRowCount()); + Assert.assertEquals("Incorrect column titles", Arrays.asList("ParticipantId", "_key", "date", "amount", "units", "kit_type"), + dataRegionTable.getColumnNames()); + Assert.assertEquals("Incorrect value in amount column", Arrays.asList("100", "100", " "), dataRegionTable.getColumnDataAsText("amount")); + + log("Edit the source query and verify snapshot is updated"); + goToSchemaBrowser(); + selectQuery("study", SOURCE_QUERY_NAME); + clickAndWait(Locator.linkContainingText("edit source")); + setCodeEditorValue("queryText", UPDATED_SOURCE_QUERY); + clickButton("Save & Finish"); + + goToProjectHome(); + clickAndWait(Locator.linkWithText(SNAPSHOT_NAME)); + dataRegionTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("Dataset").waitFor(); + Assert.assertEquals("Incorrect value in amount column", Arrays.asList("8976", "8976", "8976"), dataRegionTable.getColumnDataAsText("amount")); + } + private void truncateSndPkg() throws Exception { //cleanup - truncate snd.pkgs diff --git a/snd/webapp/snd/test/data.js b/snd/webapp/snd/test/data.js index 1746c34af..463468d76 100644 --- a/snd/webapp/snd/test/data.js +++ b/snd/webapp/snd/test/data.js @@ -59,7 +59,7 @@ active: true, repeatable: true, narrative: 'Sodium: {amount} {units} measured using {kit_type}', - categories: [], + categories: [54], subPackages: [], attributes: [ { From e197a0479c9a836b140f5b41d9e3fe0e5f48cf04 Mon Sep 17 00:00:00 2001 From: Sweta Jewargikar Date: Tue, 4 Mar 2025 14:01:00 -0800 Subject: [PATCH 2/6] Update snd/test/src/org/labkey/test/tests/snd/SNDTest.java Co-authored-by: Trey Chadick --- snd/test/src/org/labkey/test/tests/snd/SNDTest.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index a0c4fcaec..1fb8272ee 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -2223,16 +2223,9 @@ public void testQueryProvisionedSnapshot() "kit_type\n" + "FROM SND.Categories.Sodium\n"; - String UPDATED_SOURCE_QUERY = "SELECT\n" + - "lsid AS _key,\n" + - "SubjectId AS participantid,\n" + - "date,\n" + - "qcstate,\n" + - "lsid,\n" + - "'8976' AS amount,\n" + - "units,\n" + - "kit_type\n" + - "FROM SND.Categories.Sodium"; + String UPDATED_SOURCE_QUERY = SOURCE_QUERY.replace( + "amount,", + "'8976' AS amount,"); log("Run the tests from the framework for set up"); if (!runTestsInAPIFrameWork()) From 2b97dd1fa6fa057971a64489b9ef46050b79a75d Mon Sep 17 00:00:00 2001 From: labkey-sweta Date: Tue, 4 Mar 2025 16:02:02 -0800 Subject: [PATCH 3/6] Code review updates --- .../org/labkey/test/tests/snd/SNDTest.java | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index 1fb8272ee..7552e6401 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -49,6 +49,7 @@ import org.labkey.test.components.snd.PackageViewerResult; import org.labkey.test.components.snd.ProjectViewerResult; import org.labkey.test.components.snd.SuperPackageRow; +import org.labkey.test.pages.query.SourceQueryPage; import org.labkey.test.pages.snd.EditCategoriesPage; import org.labkey.test.pages.snd.EditPackagePage; import org.labkey.test.pages.snd.EditProjectPage; @@ -2101,7 +2102,7 @@ public void reviseProjectViaUI() throws Exception assertFalse("Unassigned package found assigned.", viewPage.isAssignedPackagePresent(UITEST_PROJECT_SUBPKG2)); } - private boolean runTestsInAPIFrameWork() + private void runTestsInAPIFrameWork() { log("Launching the Testing framework"); goToProjectHome(); @@ -2112,7 +2113,7 @@ private boolean runTestsInAPIFrameWork() clickButton("Run tests", 0); waitForText("Total tests:", 1, WAIT_FOR_PAGE); - return isTextPresent("Complete","Failed tests: 0"); + assertTextPresent("Complete","Failed tests: 0"); } private String getPermissionTableValue(int row, int col) @@ -2210,9 +2211,9 @@ public void categoryPermissionsUI() throws Exception @Test public void testQueryProvisionedSnapshot() { - String SOURCE_QUERY_NAME = "SND: Source query"; - String SNAPSHOT_NAME = SOURCE_QUERY_NAME + " Snapshot"; - String SOURCE_QUERY = "SELECT\n" + + String sourceQueryName = "SND: Source query"; + String snapshotName = sourceQueryName + " Snapshot"; + String sourceQuery = "SELECT\n" + "lsid AS _key,\n" + "SubjectId AS participantid,\n" + "date,\n" + @@ -2223,13 +2224,12 @@ public void testQueryProvisionedSnapshot() "kit_type\n" + "FROM SND.Categories.Sodium\n"; - String UPDATED_SOURCE_QUERY = SOURCE_QUERY.replace( + String updatedSourceQuery = sourceQuery.replace( "amount,", "'8976' AS amount,"); log("Run the tests from the framework for set up"); - if (!runTestsInAPIFrameWork()) - Assert.fail("Tests failed in the framework"); + runTestsInAPIFrameWork(); log("Enable Allow query based dataset snapshots"); OptionalFeatureHelper.enableOptionalFeature(createDefaultConnection(), "queryBasedDatasets"); @@ -2248,12 +2248,12 @@ public void testQueryProvisionedSnapshot() log("Create source query from study"); goToSchemaBrowser(); - createNewQuery("study"); - setFormElement(Locator.id("ff_newQueryName"), SOURCE_QUERY_NAME); - selectOptionByText(Locator.name("ff_baseTableName"), "DataSets"); - clickButton("Create and Edit Source"); - setCodeEditorValue("queryText", SOURCE_QUERY); - clickButton("Save & Finish"); + SourceQueryPage querySourcePage = createNewQuery("study", null) + .setName(sourceQueryName) + .setBaseTable("DataSets") + .clickCreate(); + querySourcePage.setSource(sourceQuery) + .clickSaveAndFinish(); log("Create the snapshot"); DataRegionTable queryTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("query").waitFor(); @@ -2263,7 +2263,7 @@ public void testQueryProvisionedSnapshot() log("Verify the dataset snapshot"); goToProjectHome(); - clickAndWait(Locator.linkWithText(SNAPSHOT_NAME)); + clickAndWait(Locator.linkWithText(snapshotName)); DataRegionTable dataRegionTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("Dataset").waitFor(); Assert.assertEquals("Incorrect number of rows", 3, dataRegionTable.getDataRowCount()); Assert.assertEquals("Incorrect column titles", Arrays.asList("ParticipantId", "_key", "date", "amount", "units", "kit_type"), @@ -2272,13 +2272,12 @@ public void testQueryProvisionedSnapshot() log("Edit the source query and verify snapshot is updated"); goToSchemaBrowser(); - selectQuery("study", SOURCE_QUERY_NAME); - clickAndWait(Locator.linkContainingText("edit source")); - setCodeEditorValue("queryText", UPDATED_SOURCE_QUERY); - clickButton("Save & Finish"); + querySourcePage = editSource("study", sourceQueryName); + querySourcePage.setSource(updatedSourceQuery) + .clickSaveAndFinish(); goToProjectHome(); - clickAndWait(Locator.linkWithText(SNAPSHOT_NAME)); + clickAndWait(Locator.linkWithText(snapshotName)); dataRegionTable = new DataRegionTable.DataRegionFinder(getDriver()).withName("Dataset").waitFor(); Assert.assertEquals("Incorrect value in amount column", Arrays.asList("8976", "8976", "8976"), dataRegionTable.getColumnDataAsText("amount")); } From dd62d929a836ac40b82a28f63ced21eb09a103d3 Mon Sep 17 00:00:00 2001 From: labkey-sweta Date: Wed, 5 Mar 2025 09:25:45 -0800 Subject: [PATCH 4/6] Rearranging the code --- snd/test/src/org/labkey/test/tests/snd/SNDTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index 7552e6401..84f2b9dc4 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -2228,12 +2228,12 @@ public void testQueryProvisionedSnapshot() "amount,", "'8976' AS amount,"); - log("Run the tests from the framework for set up"); - runTestsInAPIFrameWork(); - log("Enable Allow query based dataset snapshots"); OptionalFeatureHelper.enableOptionalFeature(createDefaultConnection(), "queryBasedDatasets"); + log("Run the tests from the framework for set up"); + runTestsInAPIFrameWork(); + log("Enable study module and create continuous study"); goToProjectHome(); goToManageStudy(); From 4e3d35b69262107622735f2985dbc1b4252d5093 Mon Sep 17 00:00:00 2001 From: labkey-sweta Date: Mon, 10 Mar 2025 10:44:10 -0700 Subject: [PATCH 5/6] Test fix --- snd/test/src/org/labkey/test/tests/snd/SNDTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index 84f2b9dc4..2078c0107 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -2272,7 +2272,7 @@ public void testQueryProvisionedSnapshot() log("Edit the source query and verify snapshot is updated"); goToSchemaBrowser(); - querySourcePage = editSource("study", sourceQueryName); + querySourcePage = editQuerySource("study", sourceQueryName); querySourcePage.setSource(updatedSourceQuery) .clickSaveAndFinish(); From a58896b67dd3c055aa31b8f49ed40431e119b7fe Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Wed, 12 Mar 2025 20:06:44 -0700 Subject: [PATCH 6/6] add seq num --- snd/test/src/org/labkey/test/tests/snd/SNDTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java index 84f2b9dc4..2e600f034 100644 --- a/snd/test/src/org/labkey/test/tests/snd/SNDTest.java +++ b/snd/test/src/org/labkey/test/tests/snd/SNDTest.java @@ -2217,6 +2217,7 @@ public void testQueryProvisionedSnapshot() "lsid AS _key,\n" + "SubjectId AS participantid,\n" + "date,\n" + + "SequenceNum,\n" + "qcstate,\n" + "lsid,\n" + "amount,\n" +