From 0ea173786710694ea11fef21b0e9b921ca50e524 Mon Sep 17 00:00:00 2001 From: Marcel Fox Date: Tue, 17 Oct 2023 08:23:09 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20gerar=20n=C3=BAmero=20de=20telefone=20f?= =?UTF-8?q?ixo=20aleat=C3=B3rio=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adding changelog and readme entries * adding _generate_ddd_number and generate_landline_phone * importing generate_landline_phone * adding test_generate_landline_phone --------- Co-authored-by: Marcel Cattaneo Co-authored-by: Maria Antônia Maia --- CHANGELOG.md | 1 + README.md | 18 ++++++++++++++++++ README_EN.md | 18 ++++++++++++++++++ brutils/__init__.py | 1 + brutils/phone.py | 19 +++++++++++++++++-- tests/test_phone.py | 10 ++++++++++ 6 files changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae6efd..99f4915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Utilitário `generate_landline_phone` [#190](https://github.com/brazilian-utils/brutils-python/pull/190) - Utilitário `is_valid_titulo_eleitoral` [#235](https://github.com/brazilian-utils/brutils-python/pull/235) - Suporte ao Python 3.12 [#245](https://github.com/brazilian-utils/brutils-python/pull/245) - Utilitário `is_valid_processo_juridico` [#207](https://github.com/brazilian-utils/brutils-python/pull/207) diff --git a/README.md b/README.md index 3b6c505..1276964 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ False - [is_valid_landline_phone](#is_valid_landline_phone) - [remove_symbols_phone](#remove_symbols_phone) - [generate_mobile_phone](#generate_mobile_phone) + - [generate_landline_phone](#generate_landline_phone) - [Email](#email) - [is_valid_email](#is_valid_email) - [License Plate](#license_plate) @@ -293,6 +294,23 @@ Gera um número de telefone móvel válido e aleatório '53924997638' ``` +### generate_landline_phone + +Gera um número de telefone fixo válido + +```python +>>> from brutils import generate_landline_phone +>>> generate_landline_phone() +5929797740 +>>> generate_landline_phone() +9345561355 +>>> generate_landline_phone() +1145081947 +>>> generate_landline_phone() +3138577807 +>>> +``` + ## Email ### is_valid_email diff --git a/README_EN.md b/README_EN.md index 9058de2..a2450a0 100644 --- a/README_EN.md +++ b/README_EN.md @@ -64,6 +64,7 @@ False - [is_valid_landline_phone](#is_valid_landline_phone) - [remove_symbols_phone](#remove_symbols_phone) - [generate_mobile_phone](#generate_mobile_phone) + - [generate_landline_phone](#generate_landline_phone) - [Email](#email) - [is_valid_email](#is_valid_email) - [License_Plate](#license_plate) @@ -288,6 +289,23 @@ Generates a valid and random mobile phone number '53924997638' ``` +### generate_landline_phone + +Generates a valid landline phone number + +```python +>>> from brutils import generate_landline_phone +>>> generate_landline_phone() +5929797740 +>>> generate_landline_phone() +9345561355 +>>> generate_landline_phone() +1145081947 +>>> generate_landline_phone() +3138577807 +>>> +``` + ## Email ### is_valid_email diff --git a/brutils/__init__.py b/brutils/__init__.py index 8f4ea93..9efb679 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -27,6 +27,7 @@ is_valid as is_valid_phone, format_phone, generate_mobile_phone, + generate_landline_phone, ) from brutils.license_plate import ( diff --git a/brutils/phone.py b/brutils/phone.py index 8c4a6b5..12f818f 100644 --- a/brutils/phone.py +++ b/brutils/phone.py @@ -91,13 +91,28 @@ def remove_symbols_phone(phone_number): # type: (str) -> str return cleaned_phone +def _generate_ddd_number(): # type() -> str + """ + Generate a valid DDD number. + """ + return f'{"".join([str(randint(1, 9)) for i in range(2)])}' + + def generate_mobile_phone(): """ Generate a valid and random mobile phone number """ - ddd = [str(randint(1, 9)) for i in range(2)] + ddd = _generate_ddd_number() client_number = [str(randint(0, 9)) for i in range(8)] - phone_number = f'{"".join(ddd)}9{"".join(client_number)}' + phone_number = f'{ddd}9{"".join(client_number)}' return phone_number + + +def generate_landline_phone(): # type () -> str + """ + Generate a valid and random landline phone number. + """ + ddd = _generate_ddd_number() + return f"{ddd}{randint(2,5)}{str(randint(0,9999999)).zfill(7)}" diff --git a/tests/test_phone.py b/tests/test_phone.py index 9dcd029..9b21c8c 100644 --- a/tests/test_phone.py +++ b/tests/test_phone.py @@ -7,6 +7,7 @@ remove_symbols_phone, format_phone, generate_mobile_phone, + generate_landline_phone, ) from unittest import TestCase, main @@ -179,6 +180,15 @@ def test_generate_mobile_phone(self): phone_generated = generate_mobile_phone() self.assertTrue(is_valid_mobile(phone_generated)) + def test_generate_landline_phone(self): + for _ in range(25): + with self.subTest(): + number = generate_landline_phone() + self.assertTrue(is_valid_landline(number)) + self.assertEqual(len(generate_landline_phone()), 10) + self.assertTrue(generate_landline_phone().isdigit()) + self.assertTrue(isinstance(generate_landline_phone(), str)) + if __name__ == "__main__": main()