You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

phonenumber_tests.py 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #-*- coding: utf-8 -*-
  2. from django.test.testcases import TestCase
  3. from django.db import models
  4. from oscar.core.phonenumber import PhoneNumber
  5. from oscar.models.fields import PhoneNumberField
  6. class MandatoryPhoneNumber(models.Model):
  7. phone_number = PhoneNumberField()
  8. class OptionalPhoneNumber(models.Model):
  9. phone_number = PhoneNumberField(blank=True, default='')
  10. test_number_1 = '+414204242'
  11. equal_number_strings = ['+44 113 8921113', '+441138921113']
  12. local_numbers = [
  13. ('GB', '01606 751 78'),
  14. ('DE', '0176/96842671'),
  15. ]
  16. invalid_numbers = ['+44 113 892111', ]
  17. class TestPhoneNumberTestCase(TestCase):
  18. def test_valid_numbers_are_valid(self):
  19. numbers = [PhoneNumber.from_string(number_string)
  20. for number_string in equal_number_strings]
  21. self.assertTrue(all([number.is_valid() for number in numbers]))
  22. numbers = [PhoneNumber.from_string(number_string, region=region)
  23. for region, number_string in local_numbers]
  24. self.assertTrue(all([number.is_valid() for number in numbers]))
  25. def test_invalid_numbers_are_invalid(self):
  26. numbers = [PhoneNumber.from_string(number_string)
  27. for number_string in invalid_numbers]
  28. self.assertTrue(all([not number.is_valid() for number in numbers]))
  29. class TestPhoneNumberFieldTestCase(TestCase):
  30. def test_objects_with_same_number_are_equal(self):
  31. numbers = [
  32. MandatoryPhoneNumber(phone_number=number_string).phone_number
  33. for number_string in equal_number_strings]
  34. self.assertTrue(all(n==numbers[0] for n in numbers))
  35. def test_field_returns_correct_type(self):
  36. model = OptionalPhoneNumber()
  37. self.assertEqual(model.phone_number, None)
  38. model.phone_number = '+49 176 96842671'
  39. self.assertEqual(type(model.phone_number), PhoneNumber)
  40. def test_can_assign_string_phone_number(self):
  41. opt_phone = OptionalPhoneNumber()
  42. opt_phone.phone_number = test_number_1
  43. self.assertEqual(type(opt_phone.phone_number), PhoneNumber)
  44. self.assertEqual(opt_phone.phone_number.as_e164, test_number_1)