from django.contrib.localflavor.br.forms import (BRZipCodeField, BRCNPJField, BRCPFField, BRPhoneNumberField, BRStateSelect, BRStateChoiceField) from django.test import SimpleTestCase class BRLocalFlavorTests(SimpleTestCase): def test_BRZipCodeField(self): error_format = [u'Enter a zip code in the format XXXXX-XXX.'] valid = { '12345-123': '12345-123', } invalid = { '12345_123': error_format, '1234-123': error_format, 'abcde-abc': error_format, '12345-': error_format, '-123': error_format, } self.assertFieldOutput(BRZipCodeField, valid, invalid) def test_BRCNPJField(self): error_format = [u'Invalid CNPJ number.'] error_numbersonly = [u'This field requires only numbers.'] valid = { '64.132.916/0001-88': '64.132.916/0001-88', '64-132-916/0001-88': '64-132-916/0001-88', '64132916/0001-88': '64132916/0001-88', } invalid = { '12-345-678/9012-10': error_format, '12.345.678/9012-10': error_format, '12345678/9012-10': error_format, '64.132.916/0001-XX': error_numbersonly, } self.assertFieldOutput(BRCNPJField, valid, invalid) def test_BRCPFField(self): error_format = [u'Invalid CPF number.'] error_numbersonly = [u'This field requires only numbers.'] error_atmost_chars = [u'Ensure this value has at most 14 characters (it has 15).'] error_atleast_chars = [u'Ensure this value has at least 11 characters (it has 10).'] error_atmost = [u'This field requires at most 11 digits or 14 characters.'] valid = { '663.256.017-26': '663.256.017-26', '66325601726': '66325601726', '375.788.573-20': '375.788.573-20', '84828509895': '84828509895', } invalid = { '489.294.654-54': error_format, '295.669.575-98': error_format, '539.315.127-22': error_format, '375.788.573-XX': error_numbersonly, '375.788.573-000': error_atmost_chars, '123.456.78': error_atleast_chars, '123456789555': error_atmost, } self.assertFieldOutput(BRCPFField, valid, invalid) def test_BRPhoneNumberField(self): # TODO: this doesn't test for any invalid inputs. valid = { '41-3562-3464': u'41-3562-3464', '4135623464': u'41-3562-3464', '41 3562-3464': u'41-3562-3464', '41 3562 3464': u'41-3562-3464', '(41) 3562 3464': u'41-3562-3464', '41.3562.3464': u'41-3562-3464', '41.3562-3464': u'41-3562-3464', ' (41) 3562.3464': u'41-3562-3464', } invalid = {} self.assertFieldOutput(BRPhoneNumberField, valid, invalid) def test_BRStateSelect(self): f = BRStateSelect() out = u'''''' self.assertEqual(f.render('states', 'PR'), out) def test_BRStateChoiceField(self): error_invalid = [u'Select a valid brazilian state. That state is not one of the available states.'] valid = { 'AC': 'AC', 'AL': 'AL', 'AP': 'AP', 'AM': 'AM', 'BA': 'BA', 'CE': 'CE', 'DF': 'DF', 'ES': 'ES', 'GO': 'GO', 'MA': 'MA', 'MT': 'MT', 'MS': 'MS', 'MG': 'MG', 'PA': 'PA', 'PB': 'PB', 'PR': 'PR', 'PE': 'PE', 'PI': 'PI', 'RJ': 'RJ', 'RN': 'RN', 'RS': 'RS', 'RO': 'RO', 'RR': 'RR', 'SC': 'SC', 'SP': 'SP', 'SE': 'SE', 'TO': 'TO', } invalid = { 'pr': error_invalid, } self.assertFieldOutput(BRStateChoiceField, valid, invalid)