import pytest from dmp.adapters.features import AUDIENCE_SHOW_SMS_CAMPAIGNS_PAGE from dmp.audiences.enums import AudienceTarget from dmp.audiences.exceptions import AudienceTargetNotSupportedError from dmp.audiences.handlers import ArchiveAudienceHandler, ArchiveAudienceRequest from dmp.audiences.models import Audience from tests.unit.types import CreateModel, EnableFeatures class TestArchiveAudienceHandler: @pytest.mark.db def test_archive_audience( self, handler: ArchiveAudienceHandler, create_model: CreateModel, identity_id: str, ) -> None: audience = create_model(Audience) result = handler.handle( ArchiveAudienceRequest( identity_id=identity_id, audience_id=audience.id, ) ) assert result.archived_at assert result.archived_by == identity_id @pytest.mark.db def test_archive_text_target_without_feature_flag_raise_error( self, handler: ArchiveAudienceHandler, create_model: CreateModel, identity_id: str, ) -> None: audience = create_model(Audience, target=AudienceTarget.TEXT) with pytest.raises(AudienceTargetNotSupportedError): handler.handle( ArchiveAudienceRequest( identity_id=identity_id, audience_id=audience.id, ) ) @pytest.mark.db def test_archive_text_target_with_feature_flag( self, handler: ArchiveAudienceHandler, create_model: CreateModel, identity_id: str, enable_features: EnableFeatures, ) -> None: audience = create_model(Audience, target=AudienceTarget.TEXT) with enable_features([AUDIENCE_SHOW_SMS_CAMPAIGNS_PAGE]): response = handler.handle( ArchiveAudienceRequest( identity_id=identity_id, audience_id=audience.id, ) ) assert response == audience