diff options
| author | Munyoki Kilyungi | 2025-07-01 11:18:33 +0300 |
|---|---|---|
| committer | BonfaceKilz | 2025-07-07 07:58:31 +0300 |
| commit | 0d144bd464c493dc53be38fe5129bfbdfa1a3b29 (patch) | |
| tree | 6587ee7f7c528080775fe8150b966a15bff9092c /tests/unit/db/test_case_attributes.py | |
| parent | 6e9cac9c172b1aec408de1c839dad3e7048cf4d1 (diff) | |
| download | genenetwork3-0d144bd464c493dc53be38fe5129bfbdfa1a3b29.tar.gz | |
Add function for viewing a single diff change.
Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
Diffstat (limited to 'tests/unit/db/test_case_attributes.py')
| -rw-r--r-- | tests/unit/db/test_case_attributes.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/unit/db/test_case_attributes.py b/tests/unit/db/test_case_attributes.py index 790dbe6..3580f93 100644 --- a/tests/unit/db/test_case_attributes.py +++ b/tests/unit/db/test_case_attributes.py @@ -4,12 +4,14 @@ import pytest import pickle import tempfile import os +import json from pathlib import Path from pytest_mock import MockFixture from gn3.db.case_attributes import queue_edit from gn3.db.case_attributes import ( CaseAttributeEdit, EditStatus, + view_change, update_case_attribute ) @@ -125,3 +127,62 @@ def test_update_case_attribute_no_modifications(mocker: MockFixture) -> None: ) change_id = 28 assert not update_case_attribute(mock_cursor, TMPDIR, change_id, edit) + + +@pytest.mark.unit_test +def test_view_change(mocker: MockFixture) -> None: + """Test view_change function.""" + sample_json_diff = { + "inbredset_id": 1, + "Modifications": { + "Original": { + "B6D2F1": {"Epoch": "10au"}, + "BXD100": {"Epoch": "3b"}, + "BXD101": {"SeqCvge": "29"}, + "BXD102": {"Epoch": "3b"}, + "BXD108": {"SeqCvge": ""} + }, + "Current": { + "B6D2F1": {"Epoch": "10"}, + "BXD100": {"Epoch": "3"}, + "BXD101": {"SeqCvge": "2"}, + "BXD102": {"Epoch": "3"}, + "BXD108": {"SeqCvge": "oo"} + } + } + } + CHANGE_ID = 28 + mock_cursor, mock_conn = mocker.MagicMock(), mocker.MagicMock() + mock_conn.cursor.return_value = mock_cursor + mock_cursor.fetchone.return_value = (json.dumps(sample_json_diff), None) + assert view_change(mock_cursor, CHANGE_ID) == sample_json_diff + mock_cursor.execute.assert_called_once_with( + "SELECT json_diff_data FROM caseattributes_audit WHERE id = %s", + (CHANGE_ID,)) + mock_cursor.fetchone.assert_called_once() + + +@pytest.mark.unit_test +def test_view_change_invalid_json(mocker: MockFixture) -> None: + """Test invalid json when view_change is called""" + CHANGE_ID = 28 + mock_cursor, mock_conn = mocker.MagicMock(), mocker.MagicMock() + mock_conn.cursor.return_value = mock_cursor + mock_cursor.fetchone.return_value = ("invalid_json_string", None) + with pytest.raises(json.JSONDecodeError): + view_change(mock_cursor, CHANGE_ID) + mock_cursor.execute.assert_called_once_with( + "SELECT json_diff_data FROM caseattributes_audit WHERE id = %s", + (CHANGE_ID,)) + + +@pytest.mark.unit_test +def test_view_change_no_data(mocker: MockFixture) -> None: + "Test no result when view_change is called" + CHANGE_ID = 28 + mock_cursor, mock_conn = mocker.MagicMock(), mocker.MagicMock() + mock_cursor.fetchone.return_value = (None, None) + assert view_change(mock_cursor, CHANGE_ID) == {} + mock_cursor.execute.assert_called_once_with( + "SELECT json_diff_data FROM caseattributes_audit WHERE id = %s", + (CHANGE_ID,)) |
