From 8414acffc6b1f99e21e19020369343906298a6c1 Mon Sep 17 00:00:00 2001 From: Lum Date: Tue, 17 Jun 2025 16:12:45 -0700 Subject: [PATCH 1/3] Don't allow unsupported MVFK XML overrides --- .../test/tests/query/QueryMetadataTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/org/labkey/test/tests/query/QueryMetadataTest.java b/src/org/labkey/test/tests/query/QueryMetadataTest.java index 3d4f914daa..6a92fc49ca 100644 --- a/src/org/labkey/test/tests/query/QueryMetadataTest.java +++ b/src/org/labkey/test/tests/query/QueryMetadataTest.java @@ -9,6 +9,7 @@ import org.labkey.test.components.domain.DomainFieldRow; import org.labkey.test.pages.core.admin.BaseSettingsPage.DATE_FORMAT; import org.labkey.test.pages.query.QueryMetadataEditorPage; +import org.labkey.test.pages.query.SourceQueryPage; import org.labkey.test.params.FieldDefinition; import org.labkey.test.params.experiment.SampleTypeDefinition; import org.labkey.test.params.list.IntListDefinition; @@ -288,6 +289,39 @@ private void verifyMetadataXMLAfterResave(String schemaName, String queryName, S .contains(expectedColumnXml); } + /** + * Validation for issue : 51695 + */ + @Test + public void testMultiValueJunctionType() + { + QueryMetadataEditorPage page = QueryMetadataEditorPage.beginAt(this, getProjectName(), "assay.General." + TEST_ASSAY, "Data"); + page.resetToDefault(); + + SourceQueryPage sourcePage = page.clickEditSource(); + // introduce a MVFK with an unsupported multi-value type, this should fail to save + String xml = "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " lists\n" + + " queryMetadataTestList\n" + + " key\n" + + " unsupported\n" + + " entityId\n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "
"; + + sourcePage.setMetadataXml(xml); + checker().withScreenshot("validation-error") + .verifyEquals("expecting a validation error for the unsupported multi value type", + "Failed to Save: Non-junction multi value column type : \"unsupported\" is not supported.", sourcePage.clickSaveExpectingError()); + } + @Override protected String getProjectName() { From 90fba5739048eeff3285b4dccc759423f2bdfe31 Mon Sep 17 00:00:00 2001 From: Lum Date: Wed, 25 Jun 2025 17:01:12 -0700 Subject: [PATCH 2/3] code review feedback --- src/org/labkey/test/tests/query/QueryMetadataTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/labkey/test/tests/query/QueryMetadataTest.java b/src/org/labkey/test/tests/query/QueryMetadataTest.java index 6a92fc49ca..468fe583db 100644 --- a/src/org/labkey/test/tests/query/QueryMetadataTest.java +++ b/src/org/labkey/test/tests/query/QueryMetadataTest.java @@ -319,7 +319,7 @@ public void testMultiValueJunctionType() sourcePage.setMetadataXml(xml); checker().withScreenshot("validation-error") .verifyEquals("expecting a validation error for the unsupported multi value type", - "Failed to Save: Non-junction multi value column type : \"unsupported\" is not supported.", sourcePage.clickSaveExpectingError()); + "Failed to Save: Column : \"fakeMVFK\" has an invalid fkMultiValued value : \"unsupported\" is not supported.", sourcePage.clickSaveExpectingError()); } @Override From 50592a498314472a82b5ce23445023a500dfdc9a Mon Sep 17 00:00:00 2001 From: lum Date: Fri, 27 Jun 2025 15:18:41 -0700 Subject: [PATCH 3/3] Default values shouldn't render in detail views. --- src/org/labkey/test/tests/issues/IssuesTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/org/labkey/test/tests/issues/IssuesTest.java b/src/org/labkey/test/tests/issues/IssuesTest.java index 6c749c14af..a8f39ec199 100644 --- a/src/org/labkey/test/tests/issues/IssuesTest.java +++ b/src/org/labkey/test/tests/issues/IssuesTest.java @@ -262,6 +262,8 @@ public void generalTest() throws Exception fields.add(new FieldDefinition("Note", new FieldDefinition.StringLookup("lists", getLookupTableName("issues", "Note")))); fields.add(new FieldDefinition("Module", new FieldDefinition.StringLookup("lists", getLookupTableName("issues", "Module")))); + fields.add(new FieldDefinition("StringWithDefault", FieldDefinition.ColumnType.String)); + clickProject(getProjectName()); waitAndClickAndWait(Locator.linkContainingText(ISSUE_SUMMARY_WEBPART_NAME)); IssuesAdminPage adminPage = _issuesHelper.goToAdmin(); @@ -272,6 +274,14 @@ public void generalTest() throws Exception } clickButton("Save"); + // configure a string field with a default value + adminPage = _issuesHelper.goToAdmin(); + adminPage.getFieldsPanel().getField("StringWithDefault") + .clickAdvancedSettings() + .clickDefaultValuesLink(); // should land us in + setFormElement(Locator.input("stringWithDefault"), "StringWithDefault (default value)"); + clickButton("Save Defaults"); + clickProject(getProjectName()); waitAndClickAndWait(Locator.linkContainingText(ISSUE_SUMMARY_WEBPART_NAME)); @@ -295,6 +305,9 @@ public void generalTest() throws Exception if (!isElementPresent(fifthStringLocator)) fifthStringLocator = Locator.name("myfifthstring"); selectOptionByText(fifthStringLocator, "Polonium"); + // clear out the default value on insert + setFormElement(Locator.name("stringWithDefault"), ""); + clickButton("Save"); // find issueId - parse the text from first space to : @@ -305,6 +318,7 @@ public void generalTest() throws Exception "Milestone", "My Integer", "My Second Integer", "My First String", "My Third String", "My Fourth String", "My Fifth String"); assertTextNotPresent("MySecondString", "My Second String"); assertElementPresent(Locator.linkWithText("http://www.issues.test")); + assertTextNotPresent("StringWithDefault", "StringWithDefault (default value)"); // ListAction clickAndWait(Locator.linkWithText("Issues List")); @@ -596,6 +610,8 @@ public void requiredFieldsTest() @Test public void viewSelectedDetailsTest() { + + DataRegionTable issuesTable = new DataRegionTable(ISSUE_LIST_REGION_NAME, getDriver()); issuesTable.setFilter("Status", "Has Any Value", null);