def test_valid_with_incorrect_subkey(self): for input_data in [ self.incorrect_subkey, self.dotsep_incorrect_subkey ]: field = fields.DateOfBirthField(input_data) self.assertParsesCorrectly(field, self.missing_month_value, ['', '2', '1982'])
def test_required_fails_with_any_missing_data(self): only_one = { 'dob.day': '2', } field = fields.DateOfBirthField(only_one) self.assertFalse(field.is_valid()) self.assertDictEqual( field.get_current_value(), {'year': None, 'month': None, 'day': 2}) self.assertFalse(field.is_empty()) blank = { 'dob.year': None, 'dob.day': None, 'dob.month': None, } missing = {} for input_data in [missing, blank]: field = fields.DateOfBirthField(input_data) self.assertFalse(field.is_valid()) self.assertTrue(field.is_empty()) self.assertEqual(field.get_current_value(), self.empty_value)
def test_display_value_uses_raw_value_if_non_integer(self): data = { 'dob': { 'year': 'foo', 'month': 134, 'day': False } } field = fields.DateOfBirthField(data) field.is_valid() self.assertEqual(field.get_display_value(), "134/False/foo")
def test_invalid_if_wrong_day_for_month(self): data = { 'dob': { 'year': 1901, 'month': 2, 'day': 30 } } field = fields.DateOfBirthField(data) self.assertFalse(field.is_valid()) self.assertIn( "30 is not a day in that month. Please enter a valid date", field.get_errors_list())
def test_required_only_fails_with_all_missing_data(self): only_one = { 'dob.day': '2', } field = fields.DateOfBirthField(only_one) self.assertParsesCorrectly(field, { 'year': '', 'month': '', 'day': '2' }, ['', '2', '']) self.assertFalse(field.is_empty()) blank = { 'dob.year': '', 'dob.day': '', 'dob.month': '', } missing = {} for input_data in [missing, blank]: field = fields.DateOfBirthField(input_data) self.assertFalse(field.is_valid()) self.assertTrue(field.is_empty()) self.assertEqual(field.get_current_value(), self.empty_value)
def test_parses_filled_multivalue_dicts(self): single = MultiValueDict({ 'dob.year': ['1982'], 'dob.day': ['2'], 'dob.month': ['12'], }) multi = MultiValueDict({ 'dob.year': ['2000', '1982'], 'dob.day': ['5', '2'], 'dob.month': ['1', '12'], }) for input_data in [single, multi]: field = fields.DateOfBirthField(input_data) self.assertParsesCorrectly(field, self.parsed_value)
def test_init_multivaluefield(self): field = fields.DateOfBirthField() self.assertTrue(hasattr(field, 'year')) self.assertTrue(hasattr(field, 'month')) self.assertTrue(hasattr(field, 'day')) self.assertEqual(field.empty_value, self.empty_value) # make sure all the subfields are instances for sub in field.subfields: self.assertFalse(inspect.isclass(sub)) self.assertEqual(sub.required, False) self.assertEqual(sub.is_subfield, True) self.assertEqual(sub.parent, field) expected_sub = getattr(field, sub.context_key) self.assertEqual(sub, expected_sub)
def test_can_be_instantiated_with_preparsed_data(self): prestructured = {'dob': {'day': '2', 'year': '1982', 'month': '12'}} dotsep = { 'dob.year': '1982', 'dob.day': '2', 'dob.month': '12', } undersep = { 'dob_year': '1982', 'dob_day': '2', 'dob_month': '12', } for input_data in [prestructured, dotsep, undersep]: field = fields.DateOfBirthField(input_data) self.assertParsesCorrectly(field, self.parsed_value)
def test_parses_empty_multivalue_dicts(self): empty = MultiValueDict({ 'dob.year': [], 'dob.day': [], 'dob.month': [], }) blank = MultiValueDict({ 'dob.year': [''], 'dob.day': [''], 'dob.month': [''], }) missing = MultiValueDict({}) for input_data in [empty, blank, missing]: field = fields.DateOfBirthField(input_data, required=False) self.assertParsesCorrectly(field, self.empty_value, ['', '', ''])
def test_render_dateofbirthfield(self): field = fields.DateOfBirthField() self.assertEqual(field.render(), str(field)) self.assertEqual(field.render(), mock.rendered.DATEOFBIRTHFIELD)
def test_invalid_with_missing_subkey(self): for input_data in [self.missing_subkey, self.dotsep_missing_subkey]: field = fields.DateOfBirthField(input_data) self.assertFalse(field.is_valid())