"""Test statement_period_payment_entity logic.""" from unittest.mock import patch from royalties.logic import statement_period_payment_entity as logic from royalties.tests.utils.factories import ( StatementPeriodFactory, StatementPeriodPaymentEntityFactory, ) @patch('royalties.logic.statement_period_payment_entity.models') def test_get_by_statement_period_id(mock_models, reference_payment_entity_fixtures): """Test get statement_period_payment_entity by statement_period_id.""" statement_period = StatementPeriodFactory.create() records = [ StatementPeriodPaymentEntityFactory.create( statement_period=statement_period, reference_payment_entity_id=1, ), StatementPeriodPaymentEntityFactory.create( statement_period=statement_period, reference_payment_entity_id=1, ), ] mock_models.StatementPeriod.get_by_id_or_error.return_value = statement_period res = logic.get_by_statement_period_id(statement_period.statement_period_id) assert res.status == 200 assert len(res.message) == len(records) @patch('royalties.logic.statement_period_payment_entity.models') def test_get_states_by_statement_period(mock_models): """Test getting statement_period_payment_entity abacus_states.""" statement_period_id = 300 mock_response = [ { 'statement_period_payment_entity_id': 1, 'reference_payment_entity_id': 2, 'statement_period_id': statement_period_id, 'abacus_state_id': 1000, 'action_name': 'close_balance', 'action_status': 'init', } ] mock_models.StatementPeriodPaymentEntity.get_states_by_statement_period.return_value = mock_response res = logic.get_states_by_statement_period(statement_period_id) assert res.status == 200 mock_models.StatementPeriodPaymentEntity.get_states_by_statement_period.assert_called_once_with( statement_period_id ) @patch('royalties.logic.statement_period_payment_entity.models') def test_set_is_visible_to_customer( mock_models, reference_payment_entity_fixtures, ): """Test to update is_visible_to_customer field to True.""" record = StatementPeriodPaymentEntityFactory.create(reference_payment_entity_id=2) mock_models.StatementPeriodPaymentEntity.get_by_statement_period_and_payment_entity.return_value = record res = logic.set_is_visible_to_customer( record.statement_period_id, record.reference_payment_entity_id ) assert res.status == 200 assert res.message.get('is_visible_to_customer') is True assert record.is_visible_to_customer is True mock_models.StatementPeriodPaymentEntity.get_by_statement_period_and_payment_entity.assert_called_once_with( record.statement_period_id, record.reference_payment_entity_id, )