funkwhale/api/tests/common/test_preferences.py

46 wiersze
1.3 KiB
Python

import pytest
from dynamic_preferences.registries import global_preferences_registry
from funkwhale_api.common import preferences as common_preferences
@pytest.fixture
def string_list_pref(preferences):
@global_preferences_registry.register
class P(common_preferences.StringListPreference):
default = ["hello"]
section = "test"
name = "string_list"
yield
del global_preferences_registry["test"]["string_list"]
@pytest.mark.parametrize(
"input,output",
[
(["a", "b", "c"], "a,b,c"),
(["a", "c", "b"], "a,b,c"),
(("a", "c", "b"), "a,b,c"),
([], None),
],
)
def test_string_list_serializer_to_db(input, output):
common_preferences.StringListSerializer.to_db(input) == output
@pytest.mark.parametrize(
"input,output", [("a,b,c", ["a", "b", "c"]), (None, []), ("", [])]
)
def test_string_list_serializer_to_python(input, output):
common_preferences.StringListSerializer.to_python(input) == output
def test_string_list_pref_default(string_list_pref, preferences):
assert preferences["test__string_list"] == ["hello"]
def test_string_list_pref_set(string_list_pref, preferences):
preferences["test__string_list"] = ["world", "hello"]
assert preferences["test__string_list"] == ["hello", "world"]