From fdc6ff22baba912a51c96d8c925670d70209bfcf Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 22 Jul 2026 13:22:53 -0500 Subject: [PATCH 1/2] [test]: preserve imported data and mapping --- specifyweb/backend/workbench/tests.py | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/specifyweb/backend/workbench/tests.py b/specifyweb/backend/workbench/tests.py index 8a452c79416..3530be85cb6 100644 --- a/specifyweb/backend/workbench/tests.py +++ b/specifyweb/backend/workbench/tests.py @@ -118,3 +118,56 @@ 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( + [row[: len(columns)] for row in dataset["rows"]], + rows, + ) + self.assertEqual(dataset["uploadplan"], uploadplan) \ No newline at end of file From ad91a09d17114d8153dbb6d22a23857c6ec198b1 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 22 Jul 2026 13:35:13 -0500 Subject: [PATCH 2/2] [fix]: assert complete workbench rows --- specifyweb/backend/workbench/tests.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/specifyweb/backend/workbench/tests.py b/specifyweb/backend/workbench/tests.py index 3530be85cb6..92da19098f1 100644 --- a/specifyweb/backend/workbench/tests.py +++ b/specifyweb/backend/workbench/tests.py @@ -167,7 +167,8 @@ def test_preserve_imported_data_and_mapping(self) -> None: self.assertEqual(dataset["columns"], columns) self.assertEqual( - [row[: len(columns)] for row in dataset["rows"]], - rows, + dataset["rows"], + [row + [""] for row in rows], ) - self.assertEqual(dataset["uploadplan"], uploadplan) \ No newline at end of file + self.assertEqual(dataset["uploadplan"], uploadplan) + \ No newline at end of file