diff --git a/study/test/src/org/labkey/test/tests/study/StudyDatasetsTest.java b/study/test/src/org/labkey/test/tests/study/StudyDatasetsTest.java index 149aecbc520..a57e2ef4edf 100644 --- a/study/test/src/org/labkey/test/tests/study/StudyDatasetsTest.java +++ b/study/test/src/org/labkey/test/tests/study/StudyDatasetsTest.java @@ -17,6 +17,7 @@ package org.labkey.test.tests.study; import org.jetbrains.annotations.Nullable; +import org.joda.time.DateTime; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -52,6 +53,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -180,6 +182,65 @@ public void testDatasets() checkDataElementsPresent("B", DATASET_B_MERGE.split("\t|\n")); } + @Test + public void testDatasetWithMultiChoice() + { + String datasetName = "Test dataset"; + DatasetDesignerPage definitionPage = _studyHelper.goToManageDatasets() + .clickCreateNewDataset() + .setName(datasetName); + + List tcValues = new ArrayList<>(); + tcValues.add("~`!@#$%^&*()_+=[]{}\\|';:\"<>?,./"); + tcValues.add("Blue"); + tcValues.add("Green"); + + FieldDefinition fieldDefinition = new FieldDefinition("MCF", FieldDefinition.ColumnType.TextChoice); + fieldDefinition.setMultiChoiceValues(tcValues); + FieldDefinition textChoice = new FieldDefinition("CF", FieldDefinition.ColumnType.TextChoice); + textChoice.setTextChoiceValues(tcValues); + + DomainFormPanel panel = definitionPage.getFieldsPanel(); + panel.addField(fieldDefinition); + panel.addField(textChoice); + definitionPage.clickSave(); + + Map values = new HashMap<>(); + values.put("MouseId", "999320016"); + values.put("SequenceNum", "0.1"); + values.put("date", DateTime.now().toString()); + values.put("MCF", tcValues.subList(0, 2).stream() + .sorted() + .collect(Collectors.joining(" "))); + values.put("CF", tcValues.get(1)); + + navigateToFolder(getProjectName(), getFolderName()); + _studyHelper.goToManageDatasets() + .selectDatasetByName(datasetName) + .clickViewData() + .insertDatasetRow() + .insert(values); + + DataRegionTable drt = new DataRegionTable("Dataset", getDriver()); + checker().verifyEquals("Field data didn't import as expected", values.get("MCF"), + drt.getDataAsText(0, "MCF")); + checker().verifyEquals("Field data didn't import as expected", values.get("CF"), + drt.getDataAsText(0, "CF")); + + Map updatedValues = new HashMap<>(); + updatedValues.put("MCF", tcValues.subList(1, 3).stream() + .sorted() + .collect(Collectors.joining(" "))); + updatedValues.put("CF", tcValues.get(2)); + drt.clickEditRow(0) + .update(updatedValues); + + checker().verifyEquals("Field data didn't import as expected", updatedValues.get("MCF"), + drt.getDataAsText(0, "MCF")); + checker().verifyEquals("Field data didn't import as expected", updatedValues.get("CF"), + drt.getDataAsText(0, "CF")); + } + @Test public void testDatasetSubjectId() {