# -*- coding: utf-8 -*- from __future__ import unicode_literals from datetime import date from django.contrib.localflavor.si.forms import (SIEMSOField, SITaxNumberField, SIPhoneNumberField, SIPostalCodeField, SIPostalCodeSelect) from django.test import SimpleTestCase class SILocalFlavorTests(SimpleTestCase): def test_SITaxNumberField(self): error_invalid = ['Enter a valid tax number in form SIXXXXXXXX'] valid = { '15012557': '15012557', 'SI15012557': '15012557', '22111310': '22111310', } invalid = { '22241310': error_invalid, '15012558': error_invalid, '1501': error_invalid, '1501123123123': error_invalid, 'abcdabcd': error_invalid, '01234579': error_invalid, } self.assertFieldOutput(SITaxNumberField, valid, invalid) def test_SIEMSOField(self): error_invalid = ['This field should contain exactly 13 digits.'] error_invalid_date = ['The first 7 digits of the EMSO must represent a valid past date.'] error_invalid_chksum = ['The EMSO is not valid.'] valid = { '0205951500462': '0205951500462', '2309002500068': '2309002500068', '1010985500400': '1010985500400', } invalid = { '0205951500463': error_invalid_chksum, '020': error_invalid, '020020595150046020595150046': error_invalid, 'aaaabbbbccccd': error_invalid, '1010985500800': error_invalid_chksum, '2020095500070': error_invalid_date, '5050095500078': error_invalid_date, '1010889500408': error_invalid_date, } self.assertFieldOutput(SIEMSOField, valid, invalid) def test_SIEMSOField_info_dict(self): valid = { '0205951500462': {'nationality': 50, 'gender': 'male', 'birthdate': date(1951, 5, 2)}, '2309002504063': {'nationality': 50, 'gender': 'male', 'birthdate': date(2002, 9, 23)}, '1010985505402': {'nationality': 50, 'gender': 'female', 'birthdate': date(1985, 10, 10)}, } for input, info in valid.items(): f = SIEMSOField() f.clean(input) self.assertEqual(f.info, info) def test_SIPhoneNumberField(self): error_invalid = ['Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.'] valid = { '+38640999999': '40999999', '+3861999999': '1999999', '0038640999999': '40999999', '040999999': '40999999', '01999999': '1999999', '059099999': '59099999', '059 09 99 99': '59099999', '0590/999-99': '59099999', } invalid = { '03861999999': error_invalid, '3861999999': error_invalid, } self.assertFieldOutput(SIPhoneNumberField, valid, invalid) def test_SIPostalCodeField(self): valid = { '4000': '4000', '1000': '1000' } invalid = { '1113': ['Select a valid choice. 1113 is not one of the available choices.'], '111': ['Select a valid choice. 111 is not one of the available choices.'], } self.assertFieldOutput(SIPostalCodeField, valid, invalid) def test_SIPostalCodeSelect(self): f = SIPostalCodeSelect() out = '''''' self.assertHTMLEqual(f.render('Kranj', '4000'), out)