Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions faker/providers/internet/pt_BR/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -23,5 +42,6 @@ class Provider(InternetProvider):
("ô", "o"),
("ö", "o"),
("õ", "o"),
("ó", "o"),
("ú", "u"),
)
12 changes: 6 additions & 6 deletions faker/proxy.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -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:
"""
Expand Down Expand Up @@ -4367,12 +4373,6 @@ class Faker:
"""
...

def nationality(self) -> str:
"""
:example: 'Portuguesa'
"""
...

def plate_letter(self) -> str:
"""
Generate a letter for license plates.
Expand Down
41 changes: 27 additions & 14 deletions tests/providers/test_internet.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"""
Expand Down