import faker import pytest from dirty_equals import IsList from email_campaigns.profile.models import Profile from email_campaigns.profile.services import ProfileService from email_campaigns.profile.types import EmailProfile from tests.unit.types import CreateModel class TestProfileService: @pytest.mark.db def test_find_profiles_for_emails( self, service: ProfileService, create_model: CreateModel, faker: faker.Faker ) -> None: profile = create_model(Profile, first_name="Anna") email = faker.email() data = service.find_email_profiles({profile.email, email}) assert data == IsList( EmailProfile(email=email, profile_id=None, first_name=None), EmailProfile(email=profile.email, profile_id=profile.id, first_name="Anna"), check_order=False, ) @pytest.mark.db def test_find_email_profiles_returns_none_when_no_profile_exists( self, service: ProfileService, faker: faker.Faker ) -> None: email_1 = faker.email() email_2 = faker.email() data = service.find_email_profiles({email_1, email_2}) assert data == IsList( EmailProfile(email=email_1, profile_id=None, first_name=None), EmailProfile(email=email_2, profile_id=None, first_name=None), check_order=False, )