From 401dabc04969b424ea3ff304cb07708dd90b7577 Mon Sep 17 00:00:00 2001 From: Jan Baykara Date: Thu, 12 Dec 2024 16:01:17 +0000 Subject: [PATCH] Add tests --- hub/tests/test_source_parser.py | 31 +++++++++++++++++++++++++++++++ hub/validation.py | 6 +++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/hub/tests/test_source_parser.py b/hub/tests/test_source_parser.py index 17bd1d58a..e80218f2a 100644 --- a/hub/tests/test_source_parser.py +++ b/hub/tests/test_source_parser.py @@ -4,6 +4,8 @@ from utils.py import parse_datetime +from hub.validation import validate_and_format_phone_number + class TestSourceParser(TestCase): dates_that_should_work = [ @@ -16,3 +18,32 @@ class TestSourceParser(TestCase): def test_dateparse(self): for date in self.dates_that_should_work: self.assertEqual(parse_datetime(date[0]), date[1]) + +class TestPhoneField(TestCase): + def test_invalid_phone_number(self): + phone = "123456789" + result = validate_and_format_phone_number( + phone, "GB" + ) + self.assertIsNone(result) + + def test_valid_phone_number_without_country_code(self): + phone = "07123456789" + result = validate_and_format_phone_number( + phone, "GB" + ) + self.assertEqual(result, "+447123456789") + + def test_valid_phone_number_with_country_code(self): + phone = "+447123456789" + result = validate_and_format_phone_number( + phone, ["GB"] + ) + self.assertEqual(result, "+447123456789") + + def test_valid_phone_number_for_usa(self): + phone = "4155552671" + result = validate_and_format_phone_number( + phone, ["US"] + ) + self.assertEqual(result, "+14155552671") diff --git a/hub/validation.py b/hub/validation.py index a19b7bfb4..293dc1de1 100644 --- a/hub/validation.py +++ b/hub/validation.py @@ -1,11 +1,15 @@ import phonenumbers from phonenumbers.phonenumberutil import NumberParseException +from utils.py import ensure_list -def validate_and_format_phone_number(value, countries): +def validate_and_format_phone_number(value, countries = []): """ Validates and formats a phone number to E164 format if valid, otherwise returns None. """ + countries = ensure_list(countries or []) + if len(countries) == 0: + countries = ["GB"] try: phone_number = phonenumbers.parse(value, countries[0]) if phonenumbers.is_valid_number(phone_number):