Skip to content
Snippets Groups Projects
test_preferences.py 1.27 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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):
        s = 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):
        s = 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']