test_validator.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. # Copyright 2018 Agile Geeks
  2. # Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  3. # and associated documentation files (the "Software"), to deal in the Software without restriction,
  4. # including without limitation the rights to use, copy, modify, merge, publish, distribute,
  5. # sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
  6. # is furnished to do so, subject to the following conditions:
  7. # The above copyright notice and this permission notice shall be included in all copies or substantial
  8. # portions of the Software.
  9. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  10. # LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  11. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  12. # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
  13. # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  14. import unittest
  15. from pyVat.api import Validator
  16. class TestValidator(unittest.TestCase):
  17. def test_ro(self):
  18. validator = Validator('RO2785503')
  19. self.assertTrue( validator.validate() )
  20. self.assertEqual( validator.country_code, 'RO' )
  21. self.assertEqual( validator.vat_number, '2785503' )
  22. validator = Validator('2785503', 'RO')
  23. self.assertTrue(validator.validate())
  24. validator = Validator('ro 278 5503')
  25. self.assertTrue(validator.validate())
  26. self.assertEqual(validator.country_code, 'RO')
  27. validator = Validator('RO2785500')
  28. self.assertFalse(validator.validate())
  29. def test_at(self):
  30. validator = Validator('ATU10223006')
  31. self.assertTrue(validator.validate())
  32. self.assertEqual(validator.country_code, 'AT')
  33. validator = Validator('ATU10223005')
  34. self.assertFalse(validator.validate())
  35. def test_be(self):
  36. validator = Validator('BE0776091951')
  37. self.assertTrue(validator.validate())
  38. self.assertEqual(validator.country_code, 'BE')
  39. self.assertEqual(validator.vat_number, '0776091951')
  40. validator = Validator('BE0776091950')
  41. self.assertFalse(validator.validate())
  42. validator = Validator('BE0842411247')
  43. self.assertTrue(validator.validate())
  44. def test_bg(self):
  45. # test legal entity
  46. validator = Validator('BG101004508')
  47. self.assertTrue(validator.validate())
  48. self.assertEqual(validator.country_code, 'BG')
  49. self.assertEqual(validator.vat_number, '101004508')
  50. validator = Validator('BG101004502')
  51. self.assertFalse(validator.validate())
  52. # test physical person
  53. validator = Validator('BG0041010002')
  54. self.assertTrue(validator.validate())
  55. self.assertEqual(validator.country_code, 'BG')
  56. self.assertEqual(validator.vat_number, '0041010002')
  57. # foreigners
  58. validator = Validator('BG0000100159')
  59. self.assertTrue(validator.validate())
  60. self.assertEqual(validator.country_code, 'BG')
  61. self.assertEqual(validator.vat_number, '0000100159')
  62. # others
  63. validator = Validator('BG0000100153')
  64. self.assertTrue(validator.validate())
  65. self.assertEqual(validator.country_code, 'BG')
  66. self.assertEqual(validator.vat_number, '0000100153')
  67. validator = Validator('BG202618588')
  68. self.assertTrue(validator.validate())
  69. def test_cy(self):
  70. validator = Validator('CY00532445O') # the last char is O from oranges
  71. self.assertTrue(validator.validate())
  72. self.assertEqual(validator.country_code, 'CY')
  73. self.assertEqual(validator.vat_number, '00532445O')
  74. validator = Validator('CY12000139V')
  75. self.assertFalse(validator.validate())
  76. def test_cz(self):
  77. # test legal entity
  78. validator = Validator('CZ46505334')
  79. self.assertTrue(validator.validate())
  80. self.assertEqual(validator.country_code, 'CZ')
  81. self.assertEqual(validator.vat_number, '46505334')
  82. validator = Validator('CZ46505332')
  83. self.assertFalse(validator.validate())
  84. # test individuals - special cases
  85. validator = Validator('CZ640903926')
  86. self.assertTrue(validator.validate())
  87. self.assertEqual(validator.country_code, 'CZ')
  88. self.assertEqual(validator.vat_number, '640903926')
  89. validator = Validator('CZ46505331')
  90. self.assertFalse(validator.validate())
  91. # test common individuals
  92. validator = Validator('CZ395601439')
  93. self.assertTrue(validator.validate())
  94. self.assertEqual(validator.country_code, 'CZ')
  95. self.assertEqual(validator.vat_number, '395601439')
  96. validator = Validator('CZ520229439')
  97. self.assertTrue(validator.validate())
  98. validator = Validator('CZ705601439')
  99. self.assertFalse(validator.validate())
  100. # test common individuals born after 1953
  101. validator = Validator('CZ7103192745')
  102. self.assertTrue(validator.validate())
  103. self.assertEqual(validator.country_code, 'CZ')
  104. self.assertEqual(validator.vat_number, '7103192745')
  105. validator = Validator('CZ7103192744')
  106. self.assertFalse(validator.validate())
  107. validator = Validator('CZ26159708')
  108. self.assertTrue(validator.validate())
  109. def test_de(self):
  110. validator = Validator('DE111111125')
  111. self.assertTrue(validator.validate())
  112. self.assertEqual(validator.country_code, 'DE')
  113. self.assertEqual(validator.vat_number, '111111125')
  114. validator = Validator('DE124718735')
  115. self.assertTrue(validator.validate())
  116. validator = Validator('DE180295363')
  117. self.assertTrue(validator.validate())
  118. validator = Validator('DE123475223')
  119. self.assertTrue(validator.validate())
  120. validator = Validator('DE111111122')
  121. self.assertFalse(validator.validate())
  122. def test_dk(self):
  123. validator = Validator('DK88146328')
  124. self.assertTrue(validator.validate())
  125. self.assertEqual(validator.country_code, 'DK')
  126. self.assertEqual(validator.vat_number, '88146328')
  127. validator = Validator('DK88146327')
  128. self.assertFalse(validator.validate())
  129. def test_ee(self):
  130. validator = Validator('EE100207415')
  131. self.assertTrue(validator.validate())
  132. self.assertEqual(validator.country_code, 'EE')
  133. self.assertEqual(validator.vat_number, '100207415')
  134. validator = Validator('EE100207417')
  135. self.assertFalse(validator.validate())
  136. def test_gr(self):
  137. validator = Validator('EL040127797')
  138. self.assertTrue(validator.validate())
  139. self.assertEqual(validator.country_code, 'GR')
  140. self.assertEqual(validator.vat_number, '040127797')
  141. validator = Validator('040127797', 'EL')
  142. self.assertTrue(validator.validate())
  143. validator = Validator('EL040127798')
  144. self.assertFalse(validator.validate())
  145. validator = Validator('EL999863881')
  146. self.assertTrue(validator.validate())
  147. def test_es(self):
  148. # Juridical entities other than national ones
  149. validator = Validator('esa0011012B')
  150. self.assertTrue(validator.validate())
  151. self.assertEqual(validator.country_code, 'ES')
  152. self.assertEqual(validator.vat_number, 'A0011012B')
  153. validator = Validator('ESA0011012B')
  154. self.assertTrue(validator.validate())
  155. self.assertEqual(validator.country_code, 'ES')
  156. self.assertEqual(validator.vat_number, 'A0011012B')
  157. validator = Validator('ESA0011012B', 'ES')
  158. self.assertTrue(validator.validate())
  159. validator = Validator('ESA0011011B')
  160. self.assertFalse(validator.validate())
  161. # Physical persons
  162. validator = Validator('ESZ3964521D')
  163. self.assertTrue(validator.validate())
  164. validator = Validator('ESM3964521F')
  165. self.assertTrue(validator.validate())
  166. # National juridical entities
  167. validator = Validator('ESB84968312')
  168. self.assertTrue(validator.validate())
  169. validator = Validator('ESB50860162')
  170. self.assertTrue(validator.validate())
  171. validator = Validator('ESB30034573')
  172. self.assertTrue(validator.validate())
  173. if __name__ == '__main__':
  174. unittest.main()
  175. #
  176. #
  177. #
  178. # validator = Validator()
  179. #
  180. # print (validator.validate(36804251))