def test_contact_info_json_field(self): contact_info_field = models.fields.ContactInfoJSONField( default=dict, blank=True) # valid inputs empty = {} just_email = {'email': '*****@*****.**'} all_methods = { 'email': '*****@*****.**', 'sms': '+19993334444', 'voicemail': '+19993334444', 'snailmail': '123 Main St\nOakland, CA\n94609' } # invalid inputs nonexistent_method = {'twitter': '@someone'} empty_contact_info = {'email': ''} not_dict = [[], '', ' ', 10, True, None] valid_cases = [empty, just_email, all_methods] for valid_data in valid_cases: validators.contact_info_json( valid_data ) contact_info_field.validate(valid_data, Mock()) invalid_cases = [nonexistent_method, empty_contact_info, *not_dict] for invalid_data in invalid_cases: with self.assertRaises(ValidationError): validators.contact_info_json(invalid_data) with self.assertRaises(ValidationError): contact_info_field.validate(invalid_data, Mock())
def validate(self, value, model_instance): validators.contact_info_json(value) super().validate(value, model_instance)