diff --git a/hobo/multitenant/settings_loaders.py b/hobo/multitenant/settings_loaders.py index f66e4c6..79d7d93 100644 --- a/hobo/multitenant/settings_loaders.py +++ b/hobo/multitenant/settings_loaders.py @@ -330,7 +330,6 @@ class Authentic(FileBaseSettingsLoader): fields = hobo_json.get('profile', {}).get('fields') if fields: - fields.sort(key=lambda x: x.get('order')) fields = [x for x in fields if not x['disabled']] tenant_settings.A2_PROFILE_FIELDS = [x['name'] for x in fields] tenant_settings.A2_REQUIRED_FIELDS = [ diff --git a/tests/test_settings_loaders.py b/tests/test_settings_loaders.py new file mode 100644 index 0000000..e6245aa --- /dev/null +++ b/tests/test_settings_loaders.py @@ -0,0 +1,57 @@ +import json +import os +import pytest + +from django.conf import UserSettingsHolder + +from hobo.deploy.utils import get_hobo_json +from hobo.environment.models import Authentic +from hobo.multitenant.settings_loaders import Authentic as AuthenticLoader +from hobo.profile.models import AttributeDefinition + +pytestmark = pytest.mark.django_db + + +def test_authentic_update_settings_from_path(tmpdir): + a = Authentic(title='bar', slug='bar', base_url='http://bar.example.net') + a.save() + + env = get_hobo_json() + fields = env['profile']['fields'] + assert [x['name'] for x in fields] == [ + u'title', u'first_name', u'last_name', u'email', u'address',u'zipcode', + u'city', u'country', u'birthdate', u'phone', u'mobile'] + + # swap title and mobile fields + title = AttributeDefinition.objects.get(name='title') + mobile = AttributeDefinition.objects.get(name='mobile') + (title.order, mobile.order) = (mobile.order, title.order) + title.save() + mobile.save() + + env = get_hobo_json() + fields = env['profile']['fields'] + assert [x['name'] for x in fields] == [ + u'mobile', u'first_name', u'last_name', u'email', u'address',u'zipcode', + u'city', u'country', u'birthdate', u'phone', u'title'] + + assert [x['name'] for x in fields if x['disabled']] == [u'country', u'birthdate'] + profile_fields = [x['name'] for x in fields if not x['disabled']] + assert profile_fields == [ + u'mobile', u'first_name', u'last_name', u'email', + u'address', u'zipcode', u'city', u'phone', u'title'] + + # serialize hobo.json + path = os.path.join(str(tmpdir), 'hobo.json') + json.dump(env, open(path, 'w')) + + # call settings loaders + tenant_settings = UserSettingsHolder({}) + assert not getattr(tenant_settings, 'A2_PROFILE_FIELDS', False) + assert not getattr(tenant_settings, 'A2_REQUIRED_FIELDS', False) + assert not getattr(tenant_settings, 'A2_REGISTRATION_FIELDS', False) + loader = AuthenticLoader() + loader.update_settings_from_path(tenant_settings, path) + assert tenant_settings.A2_PROFILE_FIELDS == profile_fields + assert tenant_settings.A2_REQUIRED_FIELDS == [u'first_name', u'last_name', u'email'] + assert tenant_settings.A2_REGISTRATION_FIELDS == [u'first_name', u'last_name']