about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBonfaceKilz2022-03-11 11:35:34 +0300
committerBonfaceKilz2022-03-12 15:33:09 +0300
commit78f22407ee73c89eb7477e7e025c37c671037ab0 (patch)
treef0d5d92cf0d57e184bf8fd0f11883573c197578f
parent035520cd5f99fb91540831d4d46b682452675d1b (diff)
downloadgenenetwork3-78f22407ee73c89eb7477e7e025c37c671037ab0.tar.gz
Append the strain name when extracting "actions"
* gn3/db/sample_data.py (__extract_actions): During updates, make sure that
the strain name is part of the returned string when extracting "actions".
* tests/unit/db/test_sample_data.py: Add test cases for the above.
-rw-r--r--gn3/db/sample_data.py9
-rw-r--r--tests/unit/db/test_sample_data.py23
2 files changed, 21 insertions, 11 deletions
diff --git a/gn3/db/sample_data.py b/gn3/db/sample_data.py
index e5c5e48..c697de0 100644
--- a/gn3/db/sample_data.py
+++ b/gn3/db/sample_data.py
@@ -22,7 +22,10 @@ def __extract_actions(original_data: str,
         "insert": {"data": [], "csv_header": []},
         "update": {"data": [], "csv_header": []},
     }
+    strain_name = ""
     for _o, _u, _h in zip(original_data, updated_data, csv_header):
+        if _h == "Strain Name":
+            strain_name = _o
         if _o == _u:  # No change
             continue
         elif _o and _u == "x":  # Deletion
@@ -38,8 +41,10 @@ def __extract_actions(original_data: str,
         if not val["data"]:
             result[key] = None
         else:
-            result[key]["data"] = ",".join(result[key]["data"])
-            result[key]["csv_header"] = ",".join(result[key]["csv_header"])
+            result[key]["data"] = (f"{strain_name}," +
+                                   ",".join(result[key]["data"]))
+            result[key]["csv_header"] = ("Strain Name," +
+                                         ",".join(result[key]["csv_header"]))
     return result
 
 
diff --git a/tests/unit/db/test_sample_data.py b/tests/unit/db/test_sample_data.py
index 84ab1a1..0fa2604 100644
--- a/tests/unit/db/test_sample_data.py
+++ b/tests/unit/db/test_sample_data.py
@@ -84,17 +84,22 @@ def test_extract_actions():
                               updated_data="BXD1,x,2,1,F",
                               csv_header="Strain Name,Value,SE,Count,Sex") ==
             {
-                "delete": {"data": "18", "csv_header": "Value"},
-                "insert": {"data": "2,F", "csv_header": "SE,Sex"},
-                "update": {"data": "1", "csv_header": "Count"},
+                "delete": {"data": "BXD1,18",
+                           "csv_header": "Strain Name,Value"},
+                "insert": {"data": "BXD1,2,F",
+                           "csv_header": "Strain Name,SE,Sex"},
+                "update": {"data": "BXD1,1",
+                           "csv_header": "Strain Name,Count"},
     })
     assert(__extract_actions(original_data="BXD1,18,x,0,x",
                              updated_data="BXD1,19,2,1,F",
                              csv_header="Strain Name,Value,SE,Count,Sex") ==
            {
                "delete": None,
-               "insert": {"data": "2,F", "csv_header": "SE,Sex"},
-               "update": {"data": "19,1", "csv_header": "Value,Count"},
+               "insert": {"data": "BXD1,2,F",
+                          "csv_header": "Strain Name,SE,Sex"},
+               "update": {"data": "BXD1,19,1",
+                          "csv_header": "Strain Name,Value,Count"},
     })
 
 
@@ -119,14 +124,14 @@ def test_update_sample_data(mocker):
         gn3.db.sample_data.insert_sample_data.assert_called_once_with(
             conn=mock_conn,
             trait_name=35,
-            data="2,F",
-            csv_header="SE,Sex",
+            data="BXD1,2,F",
+            csv_header="Strain Name,SE,Sex",
             phenotype_id=10007)
         gn3.db.sample_data.delete_sample_data.assert_called_once_with(
             conn=mock_conn,
             trait_name=35,
-            data="18",
-            csv_header="Value",
+            data="BXD1,18",
+            csv_header="Strain Name,Value",
             phenotype_id=10007)
         cursor.execute.assert_has_calls(
             [mocker.call("UPDATE NStrain SET count = %s "