From 5f2613de0d5b0719582acf463d28fb2d5e706d97 Mon Sep 17 00:00:00 2001 From: cnathe Date: Thu, 25 Sep 2025 12:08:30 -0500 Subject: [PATCH 1/4] EntityBulkInsertDialog.setNumericField update to locator after change to input type --- .../ui/entities/EntityBulkInsertDialog.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/org/labkey/test/components/ui/entities/EntityBulkInsertDialog.java b/src/org/labkey/test/components/ui/entities/EntityBulkInsertDialog.java index 99897412b2..9ac1a9570c 100644 --- a/src/org/labkey/test/components/ui/entities/EntityBulkInsertDialog.java +++ b/src/org/labkey/test/components/ui/entities/EntityBulkInsertDialog.java @@ -208,7 +208,7 @@ public String getTextField(CharSequence fieldIdentifier) */ public EntityBulkInsertDialog setNumericField(CharSequence fieldIdentifier, String value) { - elementCache().numericInput(fieldIdentifier).set(value); + elementCache().textInput(fieldIdentifier).set(value); return this; } @@ -218,7 +218,7 @@ public EntityBulkInsertDialog setNumericField(CharSequence fieldIdentifier, Stri */ public String getNumericField(CharSequence fieldIdentifier) { - return elementCache().numericInput(fieldIdentifier).get(); + return elementCache().textInput(fieldIdentifier).get(); } /** @@ -491,12 +491,6 @@ public Input textArea(CharSequence fieldIdentifier) return new Input(inputEl, getDriver()); } - public Input numericInput(CharSequence fieldIdentifier) - { - WebElement inputEl = numberInputLoc.findElement(formRow(fieldIdentifier)); - return new Input(inputEl, getDriver()); - } - public ReactDateTimePicker dateInput(CharSequence fieldIdentifier) { return new ReactDateTimePicker.ReactDateTimeInputFinder(getDriver()).find(formRow(fieldIdentifier)); @@ -540,7 +534,6 @@ public List fieldLabels() .findWhenNeeded(getComponentElement()); final Locator textInputLoc = Locator.tagWithAttribute("input", "type", "text"); - final Locator numberInputLoc = Locator.tagWithAttribute("input", "type", "number"); final Locator checkBoxLoc = Locator.tagWithAttribute("input", "type", "checkbox"); final Locator fieldLabels = Locator.tag("hr").followingSibling("div").childTag("label"); } From c93d86bbf8a45fc071cf49e93096d6843376df2e Mon Sep 17 00:00:00 2001 From: cnathe Date: Thu, 25 Sep 2025 12:31:20 -0500 Subject: [PATCH 2/4] EntityBulkUpdateDialog setNumericField update to locator after change to input type --- .../ui/entities/EntityBulkUpdateDialog.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/org/labkey/test/components/ui/entities/EntityBulkUpdateDialog.java b/src/org/labkey/test/components/ui/entities/EntityBulkUpdateDialog.java index eb02a00ee1..a5edaae738 100644 --- a/src/org/labkey/test/components/ui/entities/EntityBulkUpdateDialog.java +++ b/src/org/labkey/test/components/ui/entities/EntityBulkUpdateDialog.java @@ -217,7 +217,7 @@ public String getTextField(CharSequence fieldIdentifier) */ public EntityBulkUpdateDialog setNumericField(CharSequence fieldIdentifier, String value) { - enableAndWait(fieldIdentifier, elementCache().numericInput(fieldIdentifier)).set(value); + enableAndWait(fieldIdentifier, elementCache().textInput(fieldIdentifier)).set(value); return this; } @@ -227,7 +227,7 @@ public EntityBulkUpdateDialog setNumericField(CharSequence fieldIdentifier, Stri */ public String getNumericField(CharSequence fieldIdentifier) { - return elementCache().numericInput(fieldIdentifier).get(); + return elementCache().textInput(fieldIdentifier).get(); } /** @@ -453,12 +453,6 @@ public Input textArea(CharSequence fieldIdentifier) return new Input(inputEl, getDriver()); } - public Input numericInput(CharSequence fieldIdentifier) - { - WebElement inputEl = numberInputLoc.waitForElement(formRow(fieldIdentifier), WAIT_TIMEOUT); - return new Input(inputEl, getDriver()); - } - public ReactDateTimePicker dateInput(CharSequence fieldIdentifier) { return new ReactDateTimePicker.ReactDateTimeInputFinder(getDriver()).waitFor(formRow(fieldIdentifier)); @@ -475,7 +469,6 @@ public FileUploadField fileField(CharSequence fieldIdentifier) } final Locator textInputLoc = Locator.tagWithAttribute("input", "type", "text"); - final Locator numberInputLoc = Locator.tagWithAttribute("input", "type", "number"); final Locator checkBoxLoc = Locator.tagWithAttribute("input", "type", "checkbox"); final Locator.XPathLocator commentInputLocator = Locator.tagWithId("textarea", "actionComments"); final WebElement commentInput = commentInputLocator.refindWhenNeeded(this); From c838fcaaec9141c7a78eef9b5c72934e86ddf2c4 Mon Sep 17 00:00:00 2001 From: cnathe Date: Fri, 26 Sep 2025 12:23:46 -0500 Subject: [PATCH 3/4] Issue 53979 test case in ListTest --- src/org/labkey/test/tests/list/ListTest.java | 44 +++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/org/labkey/test/tests/list/ListTest.java b/src/org/labkey/test/tests/list/ListTest.java index 2f02876d9b..584c3e75d5 100644 --- a/src/org/labkey/test/tests/list/ListTest.java +++ b/src/org/labkey/test/tests/list/ListTest.java @@ -16,7 +16,6 @@ package org.labkey.test.tests.list; -import org.apache.commons.lang3.StringUtils; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; import org.junit.Before; @@ -52,8 +51,8 @@ import org.labkey.test.pages.query.UpdateQueryRowPage; import org.labkey.test.params.FieldDefinition; import org.labkey.test.params.FieldDefinition.StringLookup; +import org.labkey.test.params.FieldInfo; import org.labkey.test.params.FieldKey; -import org.labkey.test.params.list.IntListDefinition; import org.labkey.test.params.list.VarListDefinition; import org.labkey.test.tests.AuditLogTest; import org.labkey.test.util.AbstractDataRegionExportOrSignHelper.ColumnHeaderType; @@ -2160,6 +2159,47 @@ private void validateDetailsView(String listName, String pkCol) throws CommandEx assertElementPresent(Locator.tagContainingText("td", pks.get(0))); } + @Test // Issue 53979 + public void testDecimalFieldFiniteValues() + { + String listName = "DecimalFieldList"; + FieldInfo decField = FieldInfo.random("decimalField", ColumnType.Decimal); + String[][] data = new String[][] + { + {"1", "1.1"}, + {"2", "1.7976931348623157e+308"}, + {"3", "-1.7976931348623157e+308"}, + {"4", "Infinity"}, + {"5", "-Infinity"}, + {"6", "Inf"}, + {"7", "-Inf"}, + {"8", "NaN"} + }; + createList(listName, List.of( + new FieldDefinition("key", ColumnType.Integer), + decField.getFieldDefinition() + ), data); + + DataRegionTable table = new DataRegionTable("query", getDriver()); + checker().verifyEquals("Decimal field values not as expected", + List.of("1.1", "1.7976931348623157E308", "-1.7976931348623157E308", "Infinity", "-Infinity", "Infinity", "-Infinity", "NaN"), + table.getColumnDataAsText(decField.getName())); + + table.clickInsertNewRow(); + setFormElement(Locator.name(EscapeUtil.getFormFieldName("key")), "9"); + setFormElement(Locator.name(EscapeUtil.getFormFieldName(decField.getName())), "bogus"); + clickButton("Submit"); + assertTextPresent("Could not convert value: bogus"); + + setFormElement(Locator.name(EscapeUtil.getFormFieldName(decField.getName())), "1.7976931348623157e+309"); + clickButton("Submit"); + assertTextPresent("Could not convert value: 1.7976931348623157e+309"); + + setFormElement(Locator.name(EscapeUtil.getFormFieldName(decField.getName())), "-1.7976931348623157e+309"); + clickButton("Submit"); + assertTextPresent("Could not convert value: -1.7976931348623157e+309"); + } + @Override protected BrowserType bestBrowser() { From f4787a50d5059c2991ebcbed5f629b0cae549617 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Mon, 29 Sep 2025 06:41:49 -0700 Subject: [PATCH 4/4] Fix expected text and use FieldKey instead of Label for getting data --- src/org/labkey/test/tests/SampleTypeTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/labkey/test/tests/SampleTypeTest.java b/src/org/labkey/test/tests/SampleTypeTest.java index f6fbd5243d..a9143baec5 100644 --- a/src/org/labkey/test/tests/SampleTypeTest.java +++ b/src/org/labkey/test/tests/SampleTypeTest.java @@ -1985,7 +1985,7 @@ public void testAmountsAndUnitsWithoutDisplayUnit() clickButton("Cancel"); // bulk import with unit but not amount (error expected) sampleHelper.bulkImportExpectingError(List.of(Map.of("Name", "AU-BULK-ERR-2", "Units", "mL")), SampleTypeHelper.IMPORT_OPTION); - assertTextPresent("An Amount value must be provided Units are provided."); + assertTextPresent("An Amount value must be provided when Units are provided."); clickButton("Cancel"); // bulk import with both amount and unit (success expected) sampleHelper.bulkImport(List.of(Map.of("Name", "AU-BULK-SUCCESS-1", "StoredAmount", "0", "Units", "L"))); @@ -2000,7 +2000,7 @@ private void verifySampleAmountUnitValues(String name, String expectedAmount, St { DataRegionTable drt = DataRegionTable.findDataRegionWithinWebpart(this, "Sample Type Contents"); drt.setFilter("Name", "Equals", name); - checker().verifyEquals("StoredAmount value not as expected for sample " + name, expectedAmount, drt.getDataAsText(0, "Amount")); + checker().verifyEquals("StoredAmount value not as expected for sample " + name, expectedAmount, drt.getDataAsText(0, "StoredAmount")); checker().verifyEquals("Units value not as expected for sample " + name, expectedUnits, drt.getDataAsText(0, "Units")); drt.clearAllFilters(); }