Skip to content

Commit d2f55d4

Browse files
committed
coverage for Issue 52390
1 parent dc7ae47 commit d2f55d4

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

src/org/labkey/test/tests/SampleTypeTest.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.labkey.test.components.html.OptionSelect;
4343
import org.labkey.test.pages.ImportDataPage;
4444
import org.labkey.test.pages.ReactAssayDesignerPage;
45+
import org.labkey.test.pages.core.admin.BaseSettingsPage;
4546
import org.labkey.test.pages.experiment.CreateSampleTypePage;
4647
import org.labkey.test.pages.experiment.UpdateSampleTypePage;
4748
import org.labkey.test.params.FieldDefinition;
@@ -137,6 +138,75 @@ protected void doCleanup(boolean afterTest)
137138
_userHelper.deleteUsers(false, USER_FOR_FILTERTEST.getEmail());
138139
}
139140

141+
// Issue 52390: milliseconds are truncated from time fields on update or reshow
142+
@Test
143+
public void testDateAndTimeValueUpdates() throws Exception
144+
{
145+
var projectSettingsPage = goToProjectSettings();
146+
projectSettingsPage.setDefaultDateDisplayInherited(false);
147+
projectSettingsPage.setDefaultDateDisplay(BaseSettingsPage.DATE_FORMAT.MMMM_dd_yyyy);
148+
projectSettingsPage.setDefaultDateTimeDisplayInherited(false);
149+
projectSettingsPage.setDefaultDateTimeDisplay(BaseSettingsPage.DATE_FORMAT.dd_MMM_yyyy,
150+
BaseSettingsPage.TIME_FORMAT.HH_mm_ss_SSS);
151+
projectSettingsPage.setDefaultTimeDisplayInherited(false);
152+
projectSettingsPage.setDefaultTimeDisplay(BaseSettingsPage.TIME_FORMAT.HH_mm_ss_SSS);
153+
projectSettingsPage.save();
154+
155+
final String sampleTypeName = "dateTimeEditSamples";
156+
final FieldDefinition txtField = new FieldDefinition(
157+
TestDataGenerator.randomFieldName("text"), ColumnType.String).setRequired(true);
158+
final FieldDefinition dateField = new FieldDefinition(
159+
TestDataGenerator.randomFieldName("date", ":"), ColumnType.Date);
160+
final FieldDefinition timeField = new FieldDefinition(
161+
TestDataGenerator.randomFieldName("time", ":"), ColumnType.Time);
162+
final FieldDefinition dateTimeField = new FieldDefinition(
163+
TestDataGenerator.randomFieldName("dateTime", ":"), ColumnType.DateAndTime);
164+
final List<FieldDefinition> fields = List.of(txtField, dateField, timeField, dateTimeField);
165+
166+
SampleTypeDefinition sampleTypeDefinition = new SampleTypeDefinition(sampleTypeName).setFields(fields);
167+
sampleTypeDefinition.create(createDefaultConnection(), getProjectName());
168+
169+
goToProjectHome();
170+
waitAndClickAndWait(Locator.linkWithText(sampleTypeName));
171+
var dataRegion = DataRegionTable.DataRegion(getDriver()).withName("Material").waitFor();
172+
var updatePage = dataRegion.clickInsertNewRow();
173+
String date = "January 01 2025";
174+
String time = "23:56:54:123";
175+
String dateTime = "06-May-1986 23:58:34.123";
176+
updatePage.setField("Name", "sample01");
177+
updatePage.setField(dateField.getName(), date);
178+
updatePage.setField(timeField.getName(), time);
179+
updatePage.setField(dateTimeField.getName(), dateTime);
180+
updatePage.submitExpectingError();
181+
182+
checker().wrapAssertion(()-> Assertions.assertThat(updatePage.getTextInputValue(dateField.getName()))
183+
.isEqualTo("2025-01-01")); // expect reformat of date
184+
checker().wrapAssertion(()-> Assertions.assertThat(updatePage.getTextInputValue(timeField.getName()))
185+
.as("expect time to retain milliseconds")
186+
.isEqualTo(time));
187+
checker().wrapAssertion(()-> Assertions.assertThat(updatePage.getTextInputValue(dateTimeField.getName()))
188+
.as("expect dateTime to post back as entered")
189+
.isEqualTo(dateTime));
190+
checker().screenShotIfNewError("unexpected data update");
191+
192+
// fill in the required text field and submit
193+
updatePage.setField(txtField.getName(), "sample01");
194+
updatePage.submit();
195+
196+
var afterSubmit = DataRegionTable.DataRegion(getDriver()).withName("Material").waitFor();
197+
var rowData = afterSubmit.getRowDataAsText(0);
198+
checker().withScreenshot("unexpected data persisted")
199+
.wrapAssertion(()-> Assertions.assertThat(rowData)
200+
.as("Issue 52390 expect date, time, dateTime to be shown as entered")
201+
.contains(date, time, dateTime));
202+
203+
var cleanupDateFormatsPage = goToProjectSettings();
204+
cleanupDateFormatsPage.setDefaultDateDisplayInherited(true);
205+
cleanupDateFormatsPage.setDefaultDateTimeDisplayInherited(true);
206+
cleanupDateFormatsPage.setDefaultTimeDisplayInherited(true);
207+
cleanupDateFormatsPage.save();
208+
}
209+
140210
@Test
141211
public void testCreateSampleTypeNoExpression()
142212
{

0 commit comments

Comments
 (0)