diff --git a/faker/providers/internet/pt_BR/__init__.py b/faker/providers/internet/pt_BR/__init__.py index 11f84002ae..646f875042 100644 --- a/faker/providers/internet/pt_BR/__init__.py +++ b/faker/providers/internet/pt_BR/__init__.py @@ -9,11 +9,30 @@ class Provider(InternetProvider): "yahoo.com.br", "uol.com.br", "bol.com.br", - "ig.com.br", + "terra.com.br", + "outlook.com.br", + "live.com", + "icloud.com", + ) + tlds = ( + "com", + "com", + "com", + "net", + "org", + "br", + "br", + "br", + "edu.br", + "gov.br", + "gov.br", + "com.br", + "com.br", + "com.br", ) - tlds = ("com", "com", "com", "net", "org", "br", "br", "br") replacements = ( ("à", "a"), + ("á", "a"), ("â", "a"), ("ã", "a"), ("ç", "c"), @@ -23,5 +42,6 @@ class Provider(InternetProvider): ("ô", "o"), ("ö", "o"), ("õ", "o"), + ("ó", "o"), ("ú", "u"), ) diff --git a/faker/proxy.pyi b/faker/proxy.pyi index 84b0ffcf5c..fd56cb9d60 100644 --- a/faker/proxy.pyi +++ b/faker/proxy.pyi @@ -4335,6 +4335,12 @@ class Faker: def neighborhood(self) -> str: ... def cnpj(self) -> str: ... def company_id(self) -> str: ... + def nationality(self) -> str: + """ + :example: 'Brasileira' + """ + ... + def cpf(self) -> str: ... def rg(self) -> str: """ @@ -4367,12 +4373,6 @@ class Faker: """ ... - def nationality(self) -> str: - """ - :example: 'Portuguesa' - """ - ... - def plate_letter(self) -> str: """ Generate a letter for license plates. diff --git a/tests/providers/test_internet.py b/tests/providers/test_internet.py index 4e0ecc6914..e46cdfe8c7 100644 --- a/tests/providers/test_internet.py +++ b/tests/providers/test_internet.py @@ -15,6 +15,7 @@ from faker.providers.internet.en_GB import Provider as EnGbInternetProvider from faker.providers.internet.es_ES import Provider as EsEsInternetProvider from faker.providers.internet.pl_PL import Provider as PlPlInternetProvider +from faker.providers.internet.pt_BR import Provider as PtBrInternetProvider from faker.providers.internet.ro_RO import Provider as RoRoInternetProvider from faker.providers.internet.ru_RU import Provider as RuRuInternetProvider from faker.providers.internet.th_TH import Provider as ThThInternetProvider @@ -806,38 +807,50 @@ def test_slug(self, faker): class TestPtBr: """Test pt_BR internet provider methods""" + def test_free_email_domain(self, faker): + domain = faker.free_email_domain() + assert domain in PtBrInternetProvider.free_email_domains + + def test_tld(self, faker): + tld = faker.tld() + assert tld in PtBrInternetProvider.tlds + assert not tld.startswith(".") + @patch( "faker.providers.internet.Provider.user_name", lambda x: "VitóriaMagalhães", ) - def test_ascii_safe_email(self, faker): + def test_ascii_safe_email_existing(self, faker): + """It retains the original test to ensure backward compatibility.""" email = faker.ascii_safe_email() validate_email(email) assert email.split("@")[0] == "vitoriamagalhaes" @patch( "faker.providers.internet.Provider.user_name", - lambda x: "JoãoSimões", + lambda x: "JoãoVovóMônica", ) - def test_ascii_free_email(self, faker): + def test_ascii_email_new_replacements(self, faker): + """Test the new characters you added (ó, ô, ã)""" email = faker.ascii_free_email() - validate_email(email) - assert email.split("@")[0] == "joaosimoes" - - @patch( - "faker.providers.internet.Provider.user_name", - lambda x: "AndréCauã", - ) - def test_ascii_company_email(self, faker): - email = faker.ascii_company_email() - validate_email(email) - assert email.split("@")[0] == "andrecaua" + # João -> joao, Vovó -> vovo, Mônica -> monica + expected_slug = "joaovovomonica" + assert expected_slug in email def test_slug(self, faker): num_of_samples = 100 for _ in range(num_of_samples): assert faker.slug() != "" + def test_new_domains_are_present(self, faker): + """It statistically verifies if new domains appear.""" + + domains = [faker.free_email_domain() for _ in range(500)] + + assert "outlook.com.br" in domains + assert "icloud.com" in domains + assert "uol.com.br" in domains + class TestEnPh: """Test en_PH internet provider methods"""