import pytest from notifications_utils.safe_string import ( make_string_safe_for_email_local_part, make_string_safe_for_id, ) @pytest.mark.parametrize( ("unsafe_string", "expected_safe"), [ ("name with spaces", "name.with.spaces"), ("singleword", "singleword"), ("UPPER CASE", "upper.case"), ("Service - with dash", "service.with.dash"), ("lots of spaces", "lots.of.spaces"), ("name.with.dots", "name.with.dots"), ("name-with-other-delimiters", "namewithotherdelimiters"), (".leading", "leading"), ("trailing.", "trailing"), ("üńïçödë wördś", "unicode.words"), ], ) def test_email_safe_return_dot_separated_email_local_part(unsafe_string, expected_safe): assert make_string_safe_for_email_local_part(unsafe_string) == expected_safe @pytest.mark.parametrize( ("unsafe_string", "expected_safe"), [ ("name with spaces", "name-with-spaces"), ("singleword", "singleword"), ("UPPER CASE", "upper-case"), ("Service - with dash", "service---with-dash"), ("lots of spaces", "lots-of-spaces"), ("name.with.dots", "namewithdots"), ("name-with-dashes", "name-with-dashes"), ("N. London", "n-london"), (".leading", "leading"), ("-leading", "-leading"), ("trailing.", "trailing"), ("trailing-", "trailing-"), ("üńïçödë wördś", "unicode-words"), ], ) def test_id_safe_return_dash_separated_string(unsafe_string, expected_safe): assert make_string_safe_for_id(unsafe_string) == expected_safe