import pytest from campaigns.meta.enums import ( AudienceGender, AudienceGenderSelector, CampaignPlatform, CampaignPlatformSelector, ) @pytest.mark.parametrize( "platforms, expected", [ ([CampaignPlatform.INSTAGRAM], CampaignPlatformSelector.INSTAGRAM), ([CampaignPlatform.FACEBOOK], CampaignPlatformSelector.FACEBOOK), ( [CampaignPlatform.FACEBOOK, CampaignPlatform.INSTAGRAM], CampaignPlatformSelector.BOTH, ), (["one", "two"], None), ], ) def test_platform_selector_from_list( platforms: list[CampaignPlatform], expected: CampaignPlatformSelector | None ) -> None: assert CampaignPlatformSelector.from_list(platforms) == expected @pytest.mark.parametrize( "platform, expected", [ (CampaignPlatformSelector.INSTAGRAM, [CampaignPlatform.INSTAGRAM]), (CampaignPlatformSelector.FACEBOOK, [CampaignPlatform.FACEBOOK]), ( CampaignPlatformSelector.BOTH, [CampaignPlatform.FACEBOOK, CampaignPlatform.INSTAGRAM], ), ], ) def test_platform_selector_to_list( platform: str, expected: list[CampaignPlatform] ) -> None: assert CampaignPlatformSelector(platform).to_list() == expected @pytest.mark.parametrize( "genders, expected", [ ([AudienceGender.MALE], AudienceGenderSelector.MALE), ([AudienceGender.FEMALE], AudienceGenderSelector.FEMALE), ( [AudienceGender.MALE, AudienceGender.FEMALE], AudienceGenderSelector.ALL, ), (["one", "two"], None), ], ) def test_gender_selector_from_list( genders: list[AudienceGender], expected: AudienceGenderSelector | None ) -> None: assert AudienceGenderSelector.from_list(genders) == expected @pytest.mark.parametrize( "gender, expected", [ (AudienceGenderSelector.MALE, [AudienceGender.MALE]), (AudienceGenderSelector.FEMALE, [AudienceGender.FEMALE]), ( AudienceGenderSelector.ALL, [AudienceGender.MALE, AudienceGender.FEMALE], ), ], ) def test_gender_selector_to_list(gender: str, expected: list[AudienceGender]) -> None: assert AudienceGenderSelector(gender).to_list() == expected