import pytest from ows_text_campaigns.campaigns.enums import MessageSendQueueStatus from ows_text_campaigns.campaigns.handlers import ( GetCampaignLiveStatusHandler, GetCampaignLiveStatusRequest, ) from ows_text_campaigns.campaigns.models import ( Campaign, CampaignStatus, MessageSendQueue, ) from tests.unit.types import CreateModel class TestGetCampaignLiveStatusHandler: @pytest.mark.db def test_get_campaign_live_status( self, handler: GetCampaignLiveStatusHandler, create_model: CreateModel, identity_id: str, ) -> None: campaign = create_model( Campaign, name="Test Campaign", status=CampaignStatus.IN_PROGRESS, ) message_send_queue = create_model( MessageSendQueue, total=10, offset=5, campaign_id=campaign.id, status=MessageSendQueueStatus.PROCESSING, ) response = handler.handle( GetCampaignLiveStatusRequest( identity_id=identity_id, campaign_id=campaign.id, ) ) assert response.status == campaign.status assert response.messages_to_send == message_send_queue.total assert response.sent_messages == message_send_queue.offset @pytest.mark.db def test_get_campaign_live_status_no_message_queue_records( self, handler: GetCampaignLiveStatusHandler, create_model: CreateModel, identity_id: str, ) -> None: campaign = create_model( Campaign, name="Test Campaign", status=CampaignStatus.IN_PROGRESS, ) response = handler.handle( GetCampaignLiveStatusRequest( identity_id=identity_id, campaign_id=campaign.id, ) ) assert response.status == campaign.status assert response.messages_to_send == 0 assert response.sent_messages == 0