"""Statement period payment entity model tests.""" from royalties.models.statement_period_payment_entity import ( StatementPeriodPaymentEntity, ) from royalties.tests.utils.factories import ( StatementPeriodFactory, StatementPeriodPaymentEntityFactory, ) def test_create(reference_payment_entity_fixtures): """Test creating a statement_period_payment_entity.""" statement_period = StatementPeriodFactory.create() statement_period_payment_entity = StatementPeriodPaymentEntity.create( statement_period_payment_entity_id=1, reference_payment_entity_id=1, statement_period_id=statement_period.statement_period_id, is_visible_to_customer=True, ) assert statement_period_payment_entity assert statement_period_payment_entity.statement_period_payment_entity_id == 1 assert ( statement_period_payment_entity.statement_period_id == statement_period.statement_period_id ) assert statement_period_payment_entity.reference_payment_entity_id == 1 assert statement_period_payment_entity.is_visible_to_customer is True def test_get_by_statement_period_and_payment_entity(reference_payment_entity_fixtures): """Test get by statement_period_id and payment_entity_id.""" statement_period_payment_entity = StatementPeriodPaymentEntityFactory( reference_payment_entity_id=1, is_visible_to_customer=False ) result = StatementPeriodPaymentEntity.get_by_statement_period_and_payment_entity( statement_period_payment_entity.statement_period_id, statement_period_payment_entity.reference_payment_entity_id, ) assert result assert ( result.statement_period_payment_entity_id == statement_period_payment_entity.statement_period_payment_entity_id ) def test_get_states_by_statement_period(reference_payment_entity_fixtures): """Test getting statuses for statement_period_payment_entities.""" statement_period = StatementPeriodFactory.create() for i in [1, 2, 3, 4]: StatementPeriodPaymentEntityFactory.create( statement_period_payment_entity_id=i, statement_period=statement_period, reference_payment_entity_id=i, ) res = StatementPeriodPaymentEntity.get_states_by_statement_period( statement_period.statement_period_id ) assert all(item.statement_period_payment_entity_id for item in res) assert all(item.reference_payment_entity_id for item in res) assert all( item.statement_period_id == statement_period.statement_period_id for item in res ) assert all(item.abacus_state_id for item in res) assert all(item.action_name for item in res) assert all(item.action_status for item in res)