123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- from django.contrib.auth import get_user_model
- from django.test import TestCase
- from misago.users.profilefields import ProfileFields
- UserModel = get_user_model()
- class ProfileFieldsLoadTests(TestCase):
- def test_no_groups(self):
- """profile fields util handles empty list"""
- profilefields = ProfileFields([])
- profilefields.load()
- self.assertFalse(profilefields.fields_dict)
- def test_empty_group(self):
- """profile fields util handles empty group"""
- profilefields = ProfileFields([
- {
- 'name': "Test",
- 'fields': [],
- },
- ])
- profilefields.load()
- self.assertFalse(profilefields.fields_dict)
- def test_field_defines_fieldname(self):
- """fields need to define fieldname"""
- profilefields = ProfileFields([
- {
- 'name': "Test",
- 'fields': [
- 'misago.users.tests.testfiles.profilefields.NofieldnameField',
- ],
- },
- ])
- with self.assertRaises(ValueError):
- profilefields.load()
- try:
- profilefields.load()
- except ValueError as e:
- error = str(e)
- self.assertIn('misago.users.tests.testfiles.profilefields.NofieldnameField', error)
- self.assertIn('profile field has to specify fieldname attribute', error)
- def test_detect_repeated_imports(self):
- """fields can't be specified multiple times"""
- profilefields = ProfileFields([
- {
- 'name': "Test",
- 'fields': [
- 'misago.users.profilefields.default.TwitterHandleField',
- ],
- },
- {
- 'name': "Other test",
- 'fields': [
- 'misago.users.profilefields.default.TwitterHandleField',
- ],
- },
- ])
- with self.assertRaises(ValueError):
- profilefields.load()
- try:
- profilefields.load()
- except ValueError as e:
- error = str(e)
- self.assertIn('misago.users.profilefields.default.TwitterHandleField', error)
- self.assertIn('profile field has been specified twice', error)
- def test_detect_repeated_fieldnames(self):
- """fields can't reuse other field's fieldnames"""
- profilefields = ProfileFields([
- {
- 'name': "Test",
- 'fields': [
- 'misago.users.tests.testfiles.profilefields.FieldnameField',
- ],
- },
- {
- 'name': "Other test",
- 'fields': [
- 'misago.users.tests.testfiles.profilefields.RepeatedFieldnameField',
- ],
- },
- ])
- with self.assertRaises(ValueError):
- profilefields.load()
- try:
- profilefields.load()
- except ValueError as e:
- error = str(e)
- self.assertIn('misago.users.tests.testfiles.profilefields.FieldnameField', error)
- self.assertIn('misago.users.tests.testfiles.profilefields.RepeatedFieldnameField', error)
- self.assertIn('field defines fieldname "hello" that is already in use by the', error)
- def test_field_correct_field(self):
- """util loads correct field"""
- field_path = 'misago.users.profilefields.default.RealNameField'
- profilefields = ProfileFields([
- {
- 'name': "Test",
- 'fields': [field_path],
- },
- ])
- profilefields.load()
- self.assertIn(field_path, profilefields.fields_dict)
|