diff --git a/tests/test_utils_snapshot.py b/tests/test_utils_snapshot.py index 86d7c7a1c..460b7449b 100644 --- a/tests/test_utils_snapshot.py +++ b/tests/test_utils_snapshot.py @@ -1,15 +1,13 @@ import pytest -from slic.utils.snapshot import snapshot -from slic.utils import registry -from slic.core.adjustable import Adjustable from unittest.mock import patch +from slic.utils.registry import instances +from slic.utils.snapshot import snapshot +from slic.core.adjustable import Adjustable - -# --- Fake Adjustable class for testing --- class FakeAdjustable(Adjustable): def __init__(self, ID, name=None, internal=False): super().__init__(ID=ID, name=name or ID, internal=internal) - self._value = 0 # dummy fixed value for all instances + self._value = 0 def get_current_value(self): return self._value @@ -26,58 +24,52 @@ class FakeAdjustable(Adjustable): def set_target_value(self, value, *args, **kwargs): return value +@pytest.fixture(autouse=True) +def clean_registry(): + instances.cache_clear() def test_snapshot_excludes_internal_by_default(): - - visible = FakeAdjustable("visible", internal=False) - hidden = FakeAdjustable("internal", internal=True) + visible = FakeAdjustable("vis_id", "visible", False) + hidden = FakeAdjustable("hid_id", "internal", True) with patch('slic.utils.registry.instances', return_value=[visible, hidden]): result = snapshot() + assert len(result) == 1 assert visible in result assert hidden not in result - def test_snapshot_include_internal_flag(): - visible = FakeAdjustable("visible", internal=False) - hidden = FakeAdjustable("internal", internal=True) + visible = FakeAdjustable("vis_id", "visible", False) + hidden = FakeAdjustable("hid_id", "internal", True) with patch('slic.utils.registry.instances', return_value=[visible, hidden]): result = snapshot(include_internal=True) + assert len(result) == 2 assert visible in result assert hidden in result - assert len(result) == 2 - def test_snapshot_empty_result(): with patch('slic.utils.registry.instances', return_value=[]): result = snapshot() - assert isinstance(result, list) assert result == [] -# Sort key tests - -@pytest.mark.parametrize("sort_key, expected_order", [ - (repr, ["Alpha", "Beta", "Charlie"]), # Modifié pour utiliser les vrais noms +@pytest.mark.parametrize("sort_key,expected", [ + (repr, ["Alpha", "Beta", "Charlie"]), (str, ["Alpha", "Beta", "Charlie"]), (lambda a: a.ID, ["id1", "id2", "id3"]), - (lambda a: a.name.lower(), ["Alpha", "Beta", "Charlie"]), + (lambda a: a.name.lower(), ["alpha", "beta", "charlie"]), ]) -def test_snapshot_sort_keys(sort_key, expected_order): - a = FakeAdjustable("id3", name="Alpha") - b = FakeAdjustable("id1", name="Beta") - c = FakeAdjustable("id2", name="Charlie") - - unordered = [c, a, b] - - with patch('slic.utils.registry.instances', return_value=unordered): +def test_snapshot_sort_keys(sort_key, expected): + a = FakeAdjustable("id3", "Alpha") + b = FakeAdjustable("id1", "Beta") + c = FakeAdjustable("id2", "Charlie") + + with patch('slic.utils.registry.instances', return_value=[c, a, b]): result = snapshot(sort_key=sort_key) - if sort_key == repr: - assert [obj.name for obj in result] == expected_order - elif sort_key == str: - assert [obj.name for obj in result] == expected_order - elif 'ID' in sort_key.__code__.co_varnames: - assert [obj.ID for obj in result] == expected_order + if callable(sort_key) and 'ID' in sort_key.__code__.co_varnames: + assert [x.ID for x in result] == expected + elif callable(sort_key): + assert [x.name.lower() for x in result] == expected else: - assert [obj.name.lower() for obj in result] == [n.lower() for n in expected_order] \ No newline at end of file + assert [x.name for x in result] == expected \ No newline at end of file