diff options
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/db/test_sample_data.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/unit/db/test_sample_data.py b/tests/unit/db/test_sample_data.py new file mode 100644 index 0000000..4c03dbd --- /dev/null +++ b/tests/unit/db/test_sample_data.py @@ -0,0 +1,75 @@ +import pytest + +from gn3.db.sample_data import insert_sample_data +from gn3.db.sample_data import delete_sample_data + + +@pytest.mark.unit_test +def test_insert_sample_data(mocker): + mock_conn = mocker.MagicMock() + strain_id, data_id, inbredset_id = 1, 17373, 20 + with mock_conn.cursor() as cursor: + cursor.fetchone.side_effect = (0, [19, ], 0) + mocker.patch('gn3.db.sample_data.get_sample_data_ids', + return_value=(strain_id, data_id, inbredset_id)) + insert_sample_data(conn=mock_conn, + trait_name=35, + data="BXD1,18,3,0,M", + csv_header="Strain Name,Value,SE,Count,Sex", + phenotype_id=10007) + calls = [mocker.call("SELECT Id FROM PublishData where Id = %s " + "AND StrainId = %s", + (data_id, strain_id)), + mocker.call("INSERT INTO PublishData " + "(StrainId, Id, value) VALUES (%s, %s, %s)", + (strain_id, data_id, '18')), + mocker.call("INSERT INTO PublishSE " + "(StrainId, DataId, error) VALUES (%s, %s, %s)", + (strain_id, data_id, '3')), + mocker.call("INSERT INTO NStrain " + "(StrainId, DataId, count) VALUES (%s, %s, %s)", + (strain_id, data_id, '0')), + mocker.call("SELECT Id FROM CaseAttribute WHERE Name = %s", + ("Sex",)), + mocker.call("SELECT StrainId FROM CaseAttributeXRefNew " + "WHERE StrainId = %s AND " + "CaseAttributeId = %s AND InbredSetId = %s", + (strain_id, 19, inbredset_id)), + mocker.call("INSERT INTO CaseAttributeXRefNew " + "(StrainId, CaseAttributeId, Value, " + "InbredSetId) VALUES (%s, %s, %s, %s)", + (strain_id, 19, 'M', inbredset_id)) + ] + cursor.execute.assert_has_calls(calls, any_order=False) + + +@pytest.mark.unit_test +def test_delete_sample_data(mocker): + mock_conn = mocker.MagicMock() + strain_id, data_id, inbredset_id = 1, 17373, 20 + with mock_conn.cursor() as cursor: + cursor.fetchone.side_effect = (0, [19, ], 0) + mocker.patch('gn3.db.sample_data.get_sample_data_ids', + return_value=(strain_id, data_id, inbredset_id)) + delete_sample_data(conn=mock_conn, + trait_name=35, + data="BXD1,18,3,0,M", + csv_header="Strain Name,Value,SE,Count,Sex", + phenotype_id=10007) + calls = [mocker.call("DELETE FROM PublishData WHERE " + "StrainId = %s AND Id = %s", + (strain_id, data_id)), + mocker.call("DELETE FROM PublishSE WHERE " + "StrainId = %s AND DataId = %s", + (strain_id, data_id)), + mocker.call("DELETE FROM NStrain WHERE " + "StrainId = %s AND DataId = %s", + (strain_id, data_id)), + mocker.call("DELETE FROM CaseAttributeXRefNew WHERE " + "StrainId = %s AND CaseAttributeId = " + "(SELECT CaseAttributeId FROM " + "CaseAttribute WHERE Name = %s) " + "AND InbredSetId = %s", + (strain_id, "Sex", inbredset_id)), + ] + cursor.execute.assert_has_calls(calls, any_order=False) |