Repository: joke2k/faker
Pull request #839 (2018-10-16 15:36:08)

Add phone number format in Thailand :bear:
### What does this changes

* Add phone number format in Thailand.
* Add test to check the format.




Patch:
diff --git a/faker/providers/internet/__init__.py b/faker/providers/internet/__init__.py
index e256c8a5..30c1fed4 100644
--- a/faker/providers/internet/__init__.py
+++ b/faker/providers/internet/__init__.py
@@ -111,7 +111,7 @@ class Provider(BaseProvider):
         '{{url}}{{uri_path}}/{{uri_page}}{{uri_extension}}',
     )
     image_placeholder_services = (
-        'https://placeholdit.imgix.net/~text'
+        'https://placeholdit.imgix.net/~text',
         '?txtsize=55&txt={width}x{height}&w={width}&h={height}',
         'https://www.lorempixel.com/{width}/{height}',
         'https://dummyimage.com/{width}x{height}',
diff --git a/faker/providers/job/th_TH/__init__.py b/faker/providers/job/th_TH/__init__.py
deleted file mode 100644
index 35ea47c6..00000000
--- a/faker/providers/job/th_TH/__init__.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# coding=utf-8
-from __future__ import unicode_literals
-from .. import Provider as BaseProvider
-
-
-# Reference:
-# https://th.wikipedia.org/wiki/หมวดหมู่:บุคคลแบ่งตามอาชีพ
-# on 2018-10-16
-class Provider(BaseProvider):
-    jobs = [
-        'นักกฎหมาย',
-        'กวี',
-        'นักการทูต',
-        'นักการเมือง',
-        'นักการศึกษา',
-        'นักกีฬา',
-        'นักการกุศล',
-        'เกษตรกร',
-        'นักเขียน',
-        'ข้าราชการ',
-        'นักคณิตศาสตร์',
-        'คนขับรถแท็กซี่',
-        'โฆษก',
-        'จ๊อกกี้',
-        'นักจัดรายการวิทยุ',
-        'จารชน',
-        'จิตรกร',
-        'นักจิตวิทยา',
-        'เจ้าหน้าทีรักษาความปลอดภัย',
-        'เจ้าหน้าที่รัฐบาล',
-        'ช่างทำเครื่องดนตรี',
-        'ช่างทำผม',
-        'นักชีววิทยา',
-        'นักดนตรี',
-        'นักดาราศาสตร์',
-        'นักแต่งเพลง',
-        'ตำรวจ',
-        'นักถ่ายภาพ',
-        'ทนายความ',
-        'ทหารบก',
-        'นักธุรกิจ',
-        'นักเคลื่อนไหว',
-        'นักบวช',
-        'นักบิน',
-        'นักบินอวกาศ',
-        'นักประชาสัมพันธ์',
-        'นักผจญภัย',
-        'นักสะสมศิลปะ',
-        'นักแสดง',
-        'นักหนังสือพิมพ์',
-        'นางงาม',
-        'นางแบบ',
-        'นายแบบ',
-        'บรรณาธิการ',
-        'นักโบราณคดี',
-        'นักแปล',
-        'นักประดิษฐ์',
-        'นักประวัติศาสตร์',
-        'นักปรัชญา',
-        'ผู้กำกับ',
-        'ผู้กำกับภาพยนตร์',
-        'ผู้กำกับละครโทรทัศน์',
-        'ผู้จัดพิมพ์',
-        'นักพจนานุกรม',
-        'แพทย์',
-        'นักพากย์',
-        'พิธีกร',
-        'นักโภชนาการ',
-        'นักภาษาศาสตร์',
-        'เภสัชกร',
-        'มัคคุเทศก์',
-        'นักมายากล',
-        'นักวาดการ์ตูน',
-        'นักวิทยาศาสตร์',
-        'วิศวกร',
-        'วีเจ',
-        'นักเศรษฐศาสตร์',
-        'ศิลปิน',
-        'สถาปนิก',
-        'นักสังคมวิทยา',
-        'นักสังคมศาสตร์',
-        'นักสัตววิทยา',
-        'นักสำรวจ',
-        'นักสืบ',
-        'นักอนุรักษ์ธรรมชาติ',
-        'นักออกแบบ',
-        'อัยการ',
-        'โปรแกรมเมอร์',
-    ]
diff --git a/faker/providers/phone_number/pt_BR/__init__.py b/faker/providers/phone_number/pt_BR/__init__.py
index ca3efbd3..95707ba6 100644
--- a/faker/providers/phone_number/pt_BR/__init__.py
+++ b/faker/providers/phone_number/pt_BR/__init__.py
@@ -71,7 +71,6 @@ class Provider(PhoneNumberProvider):
         '#### ####',
         '####-####',
     )
-
     msisdn_formats = (
         '5511#########',
         '5521#########',
@@ -82,11 +81,3 @@ class Provider(PhoneNumberProvider):
         '5571#########',
         '5581#########',
     )
-
-    cellphone_formats = (
-        '+55 9#### ####',
-    )
-
-    def cellphone_number(self):
-        pattern = self.random_element(self.cellphone_formats)
-        return self.numerify(self.generator.parse(pattern))
diff --git a/faker/providers/phone_number/th_TH/__init__.py b/faker/providers/phone_number/th_TH/__init__.py
new file mode 100644
index 00000000..609bbb21
--- /dev/null
+++ b/faker/providers/phone_number/th_TH/__init__.py
@@ -0,0 +1,9 @@
+from __future__ import unicode_literals
+from .. import Provider as PhoneNumberProvider
+
+
+class Provider(PhoneNumberProvider):
+    formats = (
+        '+66 #### ####',
+        '+668 #### ####',
+    )


Test patch:
diff --git a/tests/providers/test_phone_number.py b/tests/providers/test_phone_number.py
index 572e80d7..f433f889 100644
--- a/tests/providers/test_phone_number.py
+++ b/tests/providers/test_phone_number.py
@@ -64,12 +64,6 @@ class TestPhoneNumber(unittest.TestCase):
         assert msisdn.isdigit()
         assert msisdn[0:4] in formats
 
-    def test_cellphone_pt_br(self):
-        factory = Faker('pt_BR')
-        cellphone = factory.cellphone_number()
-        assert cellphone is not None
-        assert len(cellphone) == 14
-
 
 class TestHuHU(unittest.TestCase):
 
@@ -79,3 +73,25 @@ class TestHuHU(unittest.TestCase):
     def test_phone_number(self):
         phone_number = self.factory.phone_number()
         re.match(r"[1-9]\d/\d{3} \d{4}", phone_number)
+
+
+class TestThTH(unittest.TestCase):
+
+    def setUp(self):
+        self.factory = Faker('th_TH')
+
+    def test_phone_number_should_be_in_defined_format(self):
+        phone_number = self.factory.phone_number()
+
+        first, second, third = phone_number.split(' ')
+
+        formats = ('+66', '+668')
+        self.assertTrue(first in formats)
+
+        if len(first) == 3:
+            self.assertEqual(first, '+66')
+        elif len(first) == 4:
+            self.assertEqual(first, '+668')
+
+        self.assertEqual(len(second), 4)
+        self.assertEqual(len(third), 4)