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..cac7fd7a675 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,68 @@ 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.MultiValueTextChoice); + 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)); + values.put("CF", tcValues.get(1)); + + navigateToFolder(getProjectName(), getFolderName()); + _studyHelper.goToManageDatasets() + .selectDatasetByName(datasetName) + .clickViewData() + .insertDatasetRow() + .insert(values); + + DataRegionTable drt = new DataRegionTable("Dataset", getDriver()); + String expectedList = ((List) values.get("MCF")).stream() + .sorted() + .collect(Collectors.joining(" ")); + checker().verifyEquals("Field data didn't import as expected", expectedList, + drt.getDataAsText(0, "MCF")); + checker().verifyEquals("Field data didn't import as expected", values.get("CF"), + drt.getDataAsText(0, "CF")); + checker().screenShotIfNewError("Create_Dataset_With_Multi_Choice"); + + Map updatedValues = new HashMap<>(); + updatedValues.put("MCF", tcValues.subList(1, 3)); + updatedValues.put("CF", (String) tcValues.get(2)); + drt.clickEditRow(0) + .update(updatedValues); + expectedList = ((List) updatedValues.get("MCF")).stream() + .sorted() + .collect(Collectors.joining(" ")); + checker().verifyEquals("Field data didn't import as expected", expectedList, + drt.getDataAsText(0, "MCF")); + checker().verifyEquals("Field data didn't import as expected", updatedValues.get("CF"), + drt.getDataAsText(0, "CF")); + checker().screenShotIfNewError("Update_Dataset_With_Multi_Choice"); + } + @Test public void testDatasetSubjectId() {