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)
Example #2
0
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
Example #5
0
 class AppConf(appsettings.AppSettings):
     my_int = appsettings.IntegerSetting()
Example #6
0
 def test_integer_setting(self):
     setting = appsettings.IntegerSetting()
     assert setting.value == 0
Example #7
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