import pytest from dmp.ad_reporting.exceptions import ( AdReportingReportNotFoundError, AdReportingReportUniqueNameError, ) from dmp.ad_reporting.handlers import ( EditAdReportingReportHandler, EditAdReportingReportRequest, ) from dmp.ad_reporting.models import AdReportingReport from tests.unit.faker import FakerTyped from tests.unit.types import CreateReportingModel class TestEditAdReportingReportHandler: @pytest.mark.db def test_edit_report( self, handler: EditAdReportingReportHandler, create_reporting_model: CreateReportingModel, identity_id: str, fake: FakerTyped, ) -> None: old_name = fake.name() new_name = fake.name() report = create_reporting_model( AdReportingReport, identity_id=identity_id, name=old_name ) result = handler.handle( EditAdReportingReportRequest( identity_id=identity_id, report_id=report.id, name=new_name, ) ) assert result.name == new_name @pytest.mark.db def test_edit_report_not_changed( self, handler: EditAdReportingReportHandler, create_reporting_model: CreateReportingModel, identity_id: str, ) -> None: report = create_reporting_model(AdReportingReport, identity_id=identity_id) result = handler.handle( EditAdReportingReportRequest( identity_id=identity_id, report_id=report.id, name=report.name.upper(), ) ) assert result.name == report.name.upper() @pytest.mark.db def test_edit_report_invalid( self, handler: EditAdReportingReportHandler, create_reporting_model: CreateReportingModel, identity_id: str, ) -> None: report_1 = create_reporting_model(AdReportingReport, identity_id=identity_id) report_2 = create_reporting_model(AdReportingReport, identity_id=identity_id) with pytest.raises(AdReportingReportUniqueNameError): handler.handle( EditAdReportingReportRequest( identity_id=identity_id, report_id=report_2.id, name=report_1.name, ) ) @pytest.mark.db def test_edit_report_not_found( self, handler: EditAdReportingReportHandler, identity_id: str, fake: FakerTyped ) -> None: with pytest.raises(AdReportingReportNotFoundError): handler.handle( EditAdReportingReportRequest( identity_id=identity_id, report_id=fake.uuid4_string(), name=fake.name(), ) )