"""Tests for Payment model.""" from unittest.mock import MagicMock from unittest.mock import patch from ows_accounting.models import payment from ows_accounting.models.sql import payment as payment_sql @patch('ows_accounting.models.payment.mysql') def test_fetchall(mock_mysql): """Test _fetchall.""" 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 payment._fetchall('this is a test') mock_session.execute.assert_any_call('this is a test', dict()) assert mock_result.fetchall.called def test_get_vendor_payments(monkeypatch): """Test get_vendor_payments.""" monkeypatch.setattr( payment, '_fetchall', MagicMock(return_value=('test_result',))) sql = payment_sql.SQL_GET_VENDOR_PAYMENTS result = payment.get_vendor_payments(1000, [100, 210, 112]) payment._fetchall.assert_any_call( sql, vendor_id=1000, periods=[100, 210, 112]) assert result.message['items'] == ('test_result',) def test_get_recent_by_vendor_id_no_result(monkeypatch): """Test get_recent_by_vendor_id with no result.""" monkeypatch.setattr( payment, '_fetchall', MagicMock(return_value=None)) sql = payment_sql.SQL_GET_VENDOR_PAYMENTS response = payment.get_vendor_payments(1000, [100, 210, 112]) payment._fetchall.assert_any_call( sql, vendor_id=1000, periods=[100, 210, 112]) assert response assert response.message['items'] == [] def test_get_recent_by_vendor_id_empty_periods_no_result(monkeypatch): """Test get_recent_by_vendor_id with no result.""" monkeypatch.setattr( payment, '_fetchall', MagicMock(return_value=None)) response = payment.get_vendor_payments(1000, []) assert response assert response.message['items'] == []