"""Tests for ows_moneyhub module.""" from unittest.mock import patch from src.connectors.ows_moneyhub import OwsMoneyhub from src.utils.constants import StatementAttachmentStatus from src.utils.constants import VatCategoryType from src.utils.dataclasses import StatementAttachmentPayload from tests.conftest import ACCOUNT_ID from tests.conftest import CONTRACT_ID from tests.conftest import STATEMENT_PERIOD_ID @patch('src.connectors.ows_service.OwsService.get') def test_get_statement_attachment(mock_owsservice, statement_attachments_fixture): """Test fetching a statement attachment.""" statement_attachment_id = 1234 mock_owsservice.return_value = statement_attachments_fixture[0] result = OwsMoneyhub.get_statement_attachment(statement_attachment_id) assert result == statement_attachments_fixture[0] mock_owsservice.assert_called_with(f'/statement-attachment/{statement_attachment_id}') @patch('src.connectors.ows_service.OwsService.get') def test_get_statement_attachments(mock_owsservice, statement_attachments_fixture): """Test to fetch statement attachments.""" path = f'/statement-attachment/account/{ACCOUNT_ID}/statement-period/{STATEMENT_PERIOD_ID}' mock_owsservice.return_value = statement_attachments_fixture OwsMoneyhub.get_statement_attachments(ACCOUNT_ID, STATEMENT_PERIOD_ID, None) mock_owsservice.assert_called_with(path, {}) @patch('src.connectors.ows_service.OwsService.get') def test_get_statement_attachments_subaccount(mock_owsservice, statement_attachments_fixture): """Test to fetch statement attachments with subaccount ID.""" path = f'/statement-attachment/account/{ACCOUNT_ID}/statement-period/{STATEMENT_PERIOD_ID}' subaccount_id = 54321 mock_owsservice.return_value = statement_attachments_fixture OwsMoneyhub.get_statement_attachments(ACCOUNT_ID, STATEMENT_PERIOD_ID, subaccount_id) mock_owsservice.assert_called_with(path, {'subaccount_id': subaccount_id}) @patch('src.connectors.ows_service.OwsService.get') def test_get_account_statement_period_vat(mock_owsservice, account_statement_period_vat_fixture): """Test getting account statement period VAT data.""" account_id = 68794 contract_id = 10001 statement_period_id = 286 params = {'contract_id': contract_id} path = f'/account/{account_id}/statement-period/{statement_period_id}/vat' mock_owsservice.return_value = account_statement_period_vat_fixture OwsMoneyhub.get_account_statement_period_vat(account_id, contract_id, statement_period_id) mock_owsservice.assert_called_with(path, params=params) @patch('src.connectors.ows_service.OwsService.put') def test_update_statement_attachment(mock_owsservice): """Test to update statement attachment.""" statement_attachment_id = 1 data = StatementAttachmentPayload( file_location='s3://file_location.pdf', statement_attachment_status=StatementAttachmentStatus.COMPLETE, failure_reason=None, ) data_serialised = data.__dict__ path = f'/statement-attachment/{statement_attachment_id}' mock_owsservice.return_value = {'success': True} OwsMoneyhub.update_statement_attachment(statement_attachment_id, data) mock_owsservice.assert_called_with(path, data_serialised) @patch('src.connectors.ows_service.OwsService.get') def test_get_reference_signing_entity(mock_owsservice, signing_entity_fixture): """Test to fetch signing entity object for a specified Contract.""" path = f'/reference-signing-entity/contract/{CONTRACT_ID}' mock_owsservice.return_value = signing_entity_fixture OwsMoneyhub.get_reference_signing_entity(CONTRACT_ID) mock_owsservice.assert_called_with(path) @patch('src.connectors.ows_service.OwsService.get') def test_get_ledger_vat_summary(mock_owsservice, ledger_vat_summary_fixture): """Test to fetch ledger vat summary.""" path = ( f'/ledger-vat-summary/account/{ACCOUNT_ID}/activity-statement-period/{STATEMENT_PERIOD_ID}' # noqa: E501 ) vat_categories = [VatCategoryType.DISTRIBUTION_FEE, VatCategoryType.COMMISSION] params = {'contract_id': CONTRACT_ID, 'vat_categories': ','.join(vat_categories)} mock_owsservice.return_value = ledger_vat_summary_fixture OwsMoneyhub.get_ledger_vat_summary(ACCOUNT_ID, CONTRACT_ID, STATEMENT_PERIOD_ID, vat_categories) mock_owsservice.assert_called_with(path, params=params)