import pytest from email_campaigns.reporting.exceptions import EmailReportingReportNotFoundError from email_campaigns.reporting.handlers import ( GetEmailReportingReportHandler, GetEmailReportingReportRequest, ) from email_campaigns.reporting.models import EmailReportingReport from tests.unit.types import CreateModel class TestGetEmailReportingReportHandler: @pytest.mark.db def test_get_report( self, handler: GetEmailReportingReportHandler, create_model: CreateModel, identity_id: str, ) -> None: report = create_model( EmailReportingReport, identity_id=identity_id, name="Test Report", ) result = handler.handle( GetEmailReportingReportRequest( identity_id=identity_id, report_id=report.id, ) ) assert result == report @pytest.mark.db def test_get_report_not_found( self, handler: GetEmailReportingReportHandler, identity_id: str, ) -> None: with pytest.raises(EmailReportingReportNotFoundError): handler.handle( GetEmailReportingReportRequest( identity_id=identity_id, report_id="non-existent-id", ) ) @pytest.mark.db def test_get_report_wrong_identity( self, handler: GetEmailReportingReportHandler, create_model: CreateModel, identity_id: str, ) -> None: report = create_model( EmailReportingReport, identity_id="other-identity", name="Test Report", ) with pytest.raises(EmailReportingReportNotFoundError): handler.handle( GetEmailReportingReportRequest( identity_id=identity_id, report_id=report.id, ) )