import pytest

from jellyfin_kodi.jellyfin.utils import clean_none_dict_values


@pytest.mark.parametrize("obj,expected", [
    (None, None),
    ([None, 1, 2, 3, None, 4], [None, 1, 2, 3, None, 4]),
    ({'foo': None, 'bar': 123}, {'bar': 123}),
    ({
        'dict': {
            'empty': None,
            'string': "Hello, Woorld!",
        },
        'number': 123,
        'list': [
            None,
            123,
            "foo",
            {
                'empty': None,
                'number': 123,
                'string': "foo",
                'list': [],
                'dict': {},
            }
        ]
    }, {
        'dict': {
            'string': "Hello, Woorld!",
        },
        'number': 123,
        'list': [
            None,
            123,
            "foo",
            {
                'number': 123,
                'string': "foo",
                'list': [],
                'dict': {},
            }
        ]
    }),
])
def test_clean_none_dict_values(obj, expected):
    assert clean_none_dict_values(obj) == expected