diff --git a/specifyweb/backend/workbench/tests.py b/specifyweb/backend/workbench/tests.py index 8a452c79416..92da19098f1 100644 --- a/specifyweb/backend/workbench/tests.py +++ b/specifyweb/backend/workbench/tests.py @@ -118,3 +118,57 @@ def test_create_record_set(self) -> None: rs = Recordset.objects.get(id=recordset_id) self.assertEqual(rs.recordsetitems.count(), 3) + + # [WorkBench] Preserve imported data and mapping after reopening a dataset + def test_preserve_imported_data_and_mapping(self) -> None: + client = Client() + client.force_login(self.specifyuser) + + columns = ["Catalog Number", "Remarks"] + rows = [["123", "First row"], ["456", "Second row"]] + uploadplan = { + "baseTableName": "collectionobject", + "uploadable": { + "uploadTable": { + "wbcols": { + "catalognumber": "Catalog Number", + "remarks": "Remarks", + }, + "static": {}, + "toOne": {}, + "toMany": {}, + } + }, + } + + response = client.post( + "/api/workbench/dataset/", + data={ + "name": "Imported dataset", + "columns": columns, + "rows": rows, + "importedfilename": "records.csv", + }, + content_type="application/json", + ) + self.assertEqual(response.status_code, 201) + datasetid = json.loads(response.content)["id"] + + response = client.put( + f"/api/workbench/dataset/{datasetid}/", + data={"uploadplan": uploadplan}, + content_type="application/json", + ) + self.assertEqual(response.status_code, 204) + + response = client.get(f"/api/workbench/dataset/{datasetid}/") + self.assertEqual(response.status_code, 200) + dataset = json.loads(response.content) + + self.assertEqual(dataset["columns"], columns) + self.assertEqual( + dataset["rows"], + [row + [""] for row in rows], + ) + self.assertEqual(dataset["uploadplan"], uploadplan) + \ No newline at end of file