from unittest.mock import MagicMock from unittest.mock import patch from ows_accounting.models import contact @patch('ows_accounting.models.contact.mysql') def test_fetchone(mock_mysql): """Test _fetchone. """ mock_result = MagicMock() mock_session = MagicMock() mock_context = MagicMock() mock_session.execute.return_value = mock_result mock_mysql.db_session.return_value = mock_context mock_context.__enter__.return_value = mock_session contact._fetchone('this is a test') mock_session.execute.assert_any_call('this is a test', dict()) assert mock_result.fetchone.called def test_get_email_by_vend_contact_id(monkeypatch): """Test get_email_by_vend_contact_id. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=('test',))) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.id = :vend_contact_id """ result = contact.get_email_by_vend_contact_id(1000) contact._fetchone.assert_any_call(sql, vend_contact_id=1000) assert result.message == 'test' def test_get_email_by_vend_contact_id_no_result(monkeypatch): """Test get_email_by_vend_contact_id with no result. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=None)) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.id = :vend_contact_id """ response = contact.get_email_by_vend_contact_id(1000) contact._fetchone.assert_any_call(sql, vend_contact_id=1000) assert not response def test_get_email_by_subaccount_id(monkeypatch): """Test get_email_by_subaccount_id. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=('test',))) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.subaccount_id = :subaccount_id """ result = contact.get_email_by_subaccount_id(88693) contact._fetchone.assert_any_call(sql, subaccount_id=88693) assert result.message == 'test' def test_get_email_by_subaccount_id_no_result(monkeypatch): """Test get_email_by_subaccount_id with no result. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=None)) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.subaccount_id = :subaccount_id """ response = contact.get_email_by_subaccount_id(1006) contact._fetchone.assert_any_call(sql, subaccount_id=1006) assert not response def test_get_email_by_vendor_id(monkeypatch): """Test get_email_by_vendor_id. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=('test',))) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.master = 'Y' AND vc.vendor_id = :vendor_id """ result = contact.get_email_by_vendor_id(8869) contact._fetchone.assert_any_call(sql, vendor_id=8869) assert result.message == 'test' def test_get_email_by_vendor_id_no_result(monkeypatch): """Test get_email_by_vendor_id with no result. """ monkeypatch.setattr( contact, '_fetchone', MagicMock(return_value=None)) sql = """ SELECT c.contact_email FROM vend_contact vc INNER JOIN contact c ON c.contact_id = vc.contact_id WHERE vc.master = 'Y' AND vc.vendor_id = :vendor_id """ response = contact.get_email_by_vendor_id(1000) contact._fetchone.assert_any_call(sql, vendor_id=1000) assert not response