|
33 | 33 | import org.labkey.test.pages.ImportDataPage; |
34 | 34 | import org.labkey.test.pages.TimeChartWizard; |
35 | 35 | import org.labkey.test.pages.study.DatasetDesignerPage; |
| 36 | +import org.labkey.test.params.FieldInfo; |
36 | 37 | import org.labkey.test.util.AuditLogHelper; |
37 | 38 | import org.labkey.test.util.DataRegionTable; |
38 | 39 | import org.labkey.test.util.LogMethod; |
|
41 | 42 | import org.labkey.test.util.TestDataGenerator; |
42 | 43 | import org.openqa.selenium.WebElement; |
43 | 44 |
|
| 45 | +import java.io.File; |
44 | 46 | import java.util.ArrayList; |
45 | 47 | import java.util.Arrays; |
46 | 48 | import java.util.Collections; |
@@ -212,6 +214,40 @@ public void testDatasetSubjectId() |
212 | 214 | clickTab("Overview"); |
213 | 215 | } |
214 | 216 |
|
| 217 | + @Test |
| 218 | + public void testDatasetRoundTripWithSpecialChars() // Issue 53431 |
| 219 | + { |
| 220 | + goToManageStudy(); |
| 221 | + String datasetName = "Issue 53431"; |
| 222 | + FieldInfo fieldInfo = FieldInfo.random("test,./field"); |
| 223 | + DatasetDesignerPage definitionPage = _studyHelper.goToManageDatasets() |
| 224 | + .clickCreateNewDataset() |
| 225 | + .setName(datasetName); |
| 226 | + DomainFormPanel panel = definitionPage.getFieldsPanel(); |
| 227 | + panel.manuallyDefineFields(fieldInfo.getFieldDefinition()); |
| 228 | + definitionPage.clickSave(); |
| 229 | + importDatasetData(datasetName, "mouseId\tsequenceNum\t\"" + fieldInfo.getName() + "\"\n", "a1\t1\ttest123", "All data"); |
| 230 | + |
| 231 | + File exportedFolder = exportFolderAsZip(null, false, false, false, false); |
| 232 | + deleteStudy(); |
| 233 | + importFolderFromZip(exportedFolder, false, 2, false); |
| 234 | + _studyHelper.goToManageDatasets() |
| 235 | + .selectDatasetByName(datasetName) |
| 236 | + .clickViewData(); |
| 237 | + DataRegionTable drt = new DataRegionTable("Dataset", getDriver()); |
| 238 | + checker().verifyEquals("Field data didn't import as expected", "test123", |
| 239 | + drt.getDataAsText(0, fieldInfo)); |
| 240 | + } |
| 241 | + |
| 242 | + private void deleteStudy() |
| 243 | + { |
| 244 | + clickTab("Manage"); |
| 245 | + clickButton("Delete Study"); |
| 246 | + checkCheckbox(Locator.checkboxByName("confirm")); |
| 247 | + clickButton("Delete", WAIT_FOR_PAGE * 2); |
| 248 | + } |
| 249 | + |
| 250 | + |
215 | 251 | @LogMethod |
216 | 252 | protected void createDataset(@LoggedParam String name, @Nullable String error) |
217 | 253 | { |
|
0 commit comments