from unittest import mock import faker import pytest from fansifter_common.identifiers.types import ( FansifterProfileIdentifier, ) from preference_center.profile.handlers import ( DeleteProfileHandler, DeleteProfileRequest, ) from preference_center.profile.models import Profile from tests.unit.types import CreateModel, CreateProfileToken class TestDeleteProfileHandler: @pytest.mark.db def test_delete_profile( self, handler: DeleteProfileHandler, create_model: CreateModel, create_profile_token: CreateProfileToken, producer_mock: mock.MagicMock, faker: faker.Faker, ) -> None: email_campaign_id = faker.pystr() updated_by = faker.pystr() profile = create_model(Profile) token = create_profile_token( FansifterProfileIdentifier.model_construct( profile_id=profile.id, email_campaign_id=email_campaign_id, impersonated_by=updated_by, ) ) handler.handle(DeleteProfileRequest(token=token)) assert profile.deleted assert profile.updated_by == updated_by producer_mock.publish.assert_called_once()