123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- from django.contrib.auth import get_user_model
- from django.test import TestCase
- from misago.users.profilefields import ProfileFields
- User = 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)
|