"""Test Processor.""" from collections import namedtuple from unittest.mock import MagicMock, patch from ledger_accounting_run_balance.constants import snowflake from ledger_accounting_run_balance.processor import LedgerAccountingRunBalanceProcessor from ledger_accounting_run_balance.template import get_formatted_query Response = namedtuple('Response', 'message status') @patch('ledger_accounting_run_balance.processor.LedgerProcessor') def test_processor_process(mock_processor, mock_event, mock_contract_list): """Test Processor.process.""" mock_cursor = MagicMock() mock_connection = MagicMock() mock_connection.cursor.return_value = mock_cursor mock_connection.fetchall.return_value = mock_contract_list LedgerAccountingRunBalanceProcessor._set_contract_type = \ MagicMock() result = LedgerAccountingRunBalanceProcessor(mock_event, mock_connection) result.process() assert mock_processor.return_value.process.call_count == len(mock_contract_list) @patch('ledger_accounting_run_balance.processor.pythonfeatures') def test__is_feature_enabled(mock_feature, mock_event): """Test checking if a feature is enabled.""" mock_cursor = MagicMock() mock_connection = MagicMock() mock_connection.cursor.return_value = mock_cursor mock_feature.get_single_feature_by_attributes.return_value = \ Response('enabled', 200) feature_name = 'yes_please' mock_attributes = {'identity_id': 'Test-Id'} result = LedgerAccountingRunBalanceProcessor(mock_event, mock_connection) \ ._is_feature_enabled(feature_name, mock_attributes) assert result is True mock_feature.get_single_feature_by_attributes.assert_called_with( feature_name, mock_attributes) @patch('ledger_accounting_run_balance.processor.pythonfeatures') def test__is_feature_disabled(mock_feature, mock_event): """Test checking if a feature is disabled.""" mock_cursor = MagicMock() mock_connection = MagicMock() mock_connection.cursor.return_value = mock_cursor mock_feature.get_single_feature_by_attributes.return_value = \ Response('control', 200) feature_name = 'yes_please' mock_attributes = {'identity_id': 'Test-Id'} result = LedgerAccountingRunBalanceProcessor(mock_event, mock_connection) \ ._is_feature_enabled(feature_name, mock_attributes) assert result is False mock_feature.get_single_feature_by_attributes.assert_called_with( feature_name, mock_attributes) def test_get_accounting_run_contract_totals_ff_disabled( mock_event, mock_contract_list ): """Test get_accounting_run_contract_totals when FF is disabled.""" mock_cursor = MagicMock() mock_connection = MagicMock() mock_connection.cursor.return_value = mock_cursor mock_connection.fetchall.return_value = mock_contract_list mock_contract_ids = [1, 2, 4] LedgerAccountingRunBalanceProcessor._is_feature_enabled = \ MagicMock(return_value=False) processor = LedgerAccountingRunBalanceProcessor(mock_event, mock_connection) result = processor.get_accounting_run_contract_totals(mock_contract_ids) assert result == get_formatted_query( snowflake.LEDGER_ACC_RUN_BALANCE_DISTRO_OLD_SQL, { 'accounting_run_id': mock_event['target_id'], 'contract_ids': '1,2,4' } ) def test_get_accounting_run_contract_totals_ff_enabled(mock_event, mock_contract_list): """Test get_accounting_run_contract_totals when FF is enabled.""" mock_cursor = MagicMock() mock_connection = MagicMock() mock_connection.cursor.return_value = mock_cursor mock_connection.fetchall.return_value = mock_contract_list mock_contract_ids = [1, 2, 4] LedgerAccountingRunBalanceProcessor._is_feature_enabled = \ MagicMock(return_value=True) processor = LedgerAccountingRunBalanceProcessor(mock_event, mock_connection) result = processor.get_accounting_run_contract_totals(mock_contract_ids) assert result == get_formatted_query( snowflake.LEDGER_ACC_RUN_BALANCE_DISTRO_SQL, { 'accounting_run_id': mock_event['target_id'], 'contract_ids': '1,2,4' } )