def test_nested_list_setting(self): setting = appsettings.NestedListSetting( name="setting", default=[], inner_setting=appsettings.IntegerSetting()) setting.check() assert setting.value == [] with override_settings(SETTING=[0, 1, 2]): setting.check() assert setting.value == (0, 1, 2) with override_settings(SETTING=[0, "1", 2]): with pytest.raises(ValueError): setting.check() setting = appsettings.NestedListSetting( name="setting", default=[], inner_setting=appsettings.ObjectSetting()) setting.check() assert setting.value == [] with override_settings(SETTING=[ "tests.test_appsettings.imported_object", "tests.test_appsettings.SettingTestCase._imported_object2", ]): setting.check() assert setting.value == (imported_object, self._imported_object2)
class Settings(appsettings.AppSettings): DJANGO_LIVE_DASHBOARD = appsettings.NestedDictSetting( settings=dict( ENABLED=appsettings.BooleanSetting(default=False), WEBSOCKET_HOST=appsettings.StringSetting(default="localhost:8000"), TOTAL_TIME_CUTOFF=appsettings.FloatSetting(default=0.5), REDIS=appsettings.NestedDictSetting( settings=dict( HOST=appsettings.StringSetting(default=REDIS_DEFAULTS["HOST"]), PORT=appsettings.IntegerSetting(default=REDIS_DEFAULTS["PORT"]), DB=appsettings.IntegerSetting(default=REDIS_DEFAULTS["DB"]), PUBSUB_CHANNEL=appsettings.StringSetting( default=REDIS_DEFAULTS["PUBSUB_CHANNEL"] ), ), default=REDIS_DEFAULTS, ), CHART=appsettings.NestedDictSetting( settings=dict( REFRESH=appsettings.IntegerSetting( default=CHART_DEFAULTS["REFRESH"] ), DELAY=appsettings.IntegerSetting(default=CHART_DEFAULTS["DELAY"]), DURATION=appsettings.IntegerSetting( default=CHART_DEFAULTS["DURATION"] ), ), default=CHART_DEFAULTS, ), ), default={ "ENABLED": False, "WEBSOCKET_HOST": "localhost:8000", "TOTAL_TIME_CUTOFF": 0.5, "REDIS": REDIS_DEFAULTS, "CHART": CHART_DEFAULTS, }, )
def test_nested_list_in_nested_dict_setting(self): setting = appsettings.NestedDictSetting( name="setting", default={}, settings=dict(select=appsettings.NestedListSetting( name="pick", default=[1], inner_setting=appsettings.IntegerSetting())), ) setting.check() assert setting.value == {} with override_settings(SETTING={}): setting.check() assert setting.value == {"select": [1]} with override_settings(SETTING={"PICK": [2]}): setting.check() assert setting.value == {"select": (2, )} with override_settings(SETTING={"PICK": ["xyz"]}): with pytest.raises(ValueError): setting.check()
def test_nested_nested_list_setting(self): setting = appsettings.NestedListSetting( name="setting", default=[], inner_setting=appsettings.NestedListSetting( name="inner", default=[], inner_setting=appsettings.IntegerSetting() ), ) setting.check() assert setting.value == [] assert setting.inner_setting.name == "inner" with override_settings(SETTING=([1, 2, 3], [4, 5])): setting.check() assert setting.value == ((1, 2, 3), (4, 5)) with override_settings(SETTING=[[1, 2, 3], ["x", 5]]): with pytest.raises(ImproperlyConfigured): setting.check() setting = appsettings.NestedListSetting( name="setting", inner_setting=appsettings.NestedListSetting( inner_setting=appsettings.NestedListSetting(inner_setting=appsettings.ObjectSetting()) ), ) assert setting.inner_setting.name == "setting" with override_settings( SETTING=[ ( ["tests.test_appsettings.imported_object"], ["tests.test_appsettings.ImportedClass._imported_object2"], ) ] ): setting.check() assert setting.value == (((imported_object,), (ImportedClass._imported_object2,)),) with override_settings( SETTING=[[["tests.test_appsettings.imported_object"], ["tests.test_appsettings.object_does_not_exist"]]] ): with pytest.raises(AttributeError): assert setting.value
class AppConf(appsettings.AppSettings): my_int = appsettings.IntegerSetting()
def test_integer_setting(self): setting = appsettings.IntegerSetting() assert setting.value == 0
def test_setting_default_dont_raise_exception(self): setting = appsettings.IntegerSetting(name="setting", default="hello") assert setting.value == "hello" with override_settings(SETTING=0): assert setting.value == 0
def test_nested_list_setting(self): setting = appsettings.NestedListSetting(name="setting", default=[], inner_setting=appsettings.IntegerSetting()) setting.check() assert setting.value == [] with override_settings(SETTING=[0, 1, 2]): setting.check() assert setting.value == (0, 1, 2) with override_settings(SETTING=[0, "1", 2]): with pytest.raises(ImproperlyConfigured): setting.check() setting = appsettings.NestedListSetting( name="setting", default=["tests.test_appsettings.imported_object"], transform_default=True, inner_setting=appsettings.ObjectSetting(), ) setting.check() assert setting.value == (imported_object,) with override_settings( SETTING=[ "tests.test_appsettings.imported_object", "tests.test_appsettings.ImportedClass._imported_object2", ] ): setting.check() assert setting.value == (imported_object, ImportedClass._imported_object2)
def test_integer_setting_from_environ_value(self): setting = appsettings.IntegerSetting(name="setting") setting.check() assert setting.value == 123 assert type(setting.value) is int