about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBonfaceKilz2021-06-03 11:08:58 +0300
committerBonfaceKilz2021-06-03 21:58:31 +0300
commit5d361fe5102a11afbd56aaab30e4a75a332c3e99 (patch)
tree81d61039106d9c283984c5b7507b618c074f3af1
parent8d29add407d5662995dbc9e94901636b15d32475 (diff)
downloadgenenetwork3-5d361fe5102a11afbd56aaab30e4a75a332c3e99.tar.gz
Add data structures for the table metadata_audit
-rw-r--r--gn3/db/__init__.py5
-rw-r--r--gn3/db/metadata_audit.py26
-rw-r--r--tests/unit/db/test_audit.py28
3 files changed, 59 insertions, 0 deletions
diff --git a/gn3/db/__init__.py b/gn3/db/__init__.py
index d89dbf4..175a640 100644
--- a/gn3/db/__init__.py
+++ b/gn3/db/__init__.py
@@ -5,21 +5,26 @@ from dataclasses import dataclass, asdict, astuple
 from typing_extensions import Protocol
 from MySQLdb import escape_string
 
+from gn3.db.metadata_audit import MetadataAudit
 from gn3.db.phenotypes import Phenotype
 from gn3.db.phenotypes import PublishXRef
 from gn3.db.phenotypes import Publication
 
+from gn3.db.metadata_audit import metadata_audit_mapping
 from gn3.db.phenotypes import phenotype_mapping
 from gn3.db.phenotypes import publish_x_ref_mapping
 from gn3.db.phenotypes import publication_mapping
 
+
 TABLEMAP = {
+    "metadata_audit": metadata_audit_mapping,
     "Phenotype": phenotype_mapping,
     "PublishXRef": publish_x_ref_mapping,
     "Publication": publication_mapping,
 }
 
 DATACLASSMAP = {
+    "MetadataAudit": MetadataAudit,
     "Phenotype": Phenotype,
     "PublishXRef": PublishXRef,
     "Publication": Publication,
diff --git a/gn3/db/metadata_audit.py b/gn3/db/metadata_audit.py
new file mode 100644
index 0000000..6e22b32
--- /dev/null
+++ b/gn3/db/metadata_audit.py
@@ -0,0 +1,26 @@
+# pylint: disable=[R0902, R0903]
+"""This contains all the necessary functions that access the metadata_audit
+table from the db
+
+"""
+from dataclasses import dataclass
+from typing import Optional
+
+
+@dataclass(frozen=True)
+class MetadataAudit:
+    """Data Type that represents a Phenotype"""
+    dataset_id: int
+    editor: str
+    json_data: str
+    time_stamp: Optional[str] = None
+
+
+# Mapping from the MetadataAudit dataclass to the actual column names in the
+# database
+metadata_audit_mapping = {
+    "dataset_id": "dataset_id",
+    "editor": "editor",
+    "json_data": "json_data",
+    "time_stamp": "time_stamp",
+}
diff --git a/tests/unit/db/test_audit.py b/tests/unit/db/test_audit.py
new file mode 100644
index 0000000..22787bb
--- /dev/null
+++ b/tests/unit/db/test_audit.py
@@ -0,0 +1,28 @@
+"""Tests for db/phenotypes.py"""
+import json
+from unittest import TestCase
+from unittest import mock
+
+from gn3.db import insert
+from gn3.db.metadata_audit import MetadataAudit
+
+
+class TestMetadatAudit(TestCase):
+    """Test cases for fetching chromosomes"""
+
+    def test_insert_into_metadata_audit(self):
+        """Test that data is inserted correctly in the audit table
+
+        """
+        db_mock = mock.MagicMock()
+        with db_mock.cursor() as cursor:
+            type(cursor).rowcount = 1
+            self.assertEqual(insert(
+                conn=db_mock, table="metadata_audit",
+                data=MetadataAudit(dataset_id=35,
+                                   editor="Bonface",
+                                   json_data=json.dumps({"a": "b"}))), 1)
+            cursor.execute.assert_called_once_with(
+                "INSERT INTO metadata_audit ('dataset_id', "
+                "'editor', 'json_data') "
+                'VALUES (\'35\', \'Bonface\', \'{\\"a\\": \\"b\\"}\')')