Files
musicseerr/backend/tests/services/test_navidrome_cache_invalidation.py
T
Harvey 343bafd7f4 feat: Requests / Add to Library Rework - Unmonitored album default + … (#25)
* feat: Requests / Add to Library Rework - Unmonitored album default + Resilience

* checking for source + refresh album logic

* artist monitoring + auto downloading + various request fixes

* synchronous album requests

* format
2026-04-06 23:08:58 +01:00

66 lines
1.9 KiB
Python

import pytest
import time
from unittest.mock import MagicMock, patch
from services.navidrome_library_service import NavidromeLibraryService
@pytest.fixture
def service():
svc = NavidromeLibraryService.__new__(NavidromeLibraryService)
svc._mbid_to_navidrome_id = {}
svc._album_mbid_cache = {}
svc._dirty = False
return svc
ALBUM_MBID = "77434d0b-1c5f-48c3-8694-050cb378ebd2"
NAVIDROME_ID = "nav-12345"
def test_invalidate_clears_mbid_to_navidrome_id(service):
service._mbid_to_navidrome_id[ALBUM_MBID] = NAVIDROME_ID
service.invalidate_album_cache(ALBUM_MBID)
assert ALBUM_MBID not in service._mbid_to_navidrome_id
def test_invalidate_clears_positive_album_mbid_cache_entries(service):
cache_key = "test album:test artist"
service._album_mbid_cache[cache_key] = ALBUM_MBID
service.invalidate_album_cache(ALBUM_MBID)
assert cache_key not in service._album_mbid_cache
assert service._dirty is True
def test_invalidate_clears_multiple_matching_entries(service):
service._album_mbid_cache["key1:artist1"] = ALBUM_MBID
service._album_mbid_cache["key2:artist2"] = ALBUM_MBID
service._album_mbid_cache["other:other"] = "different-mbid"
service.invalidate_album_cache(ALBUM_MBID)
assert "key1:artist1" not in service._album_mbid_cache
assert "key2:artist2" not in service._album_mbid_cache
assert "other:other" in service._album_mbid_cache
def test_invalidate_noop_when_not_cached(service):
service.invalidate_album_cache(ALBUM_MBID)
assert service._dirty is False
def test_invalidate_leaves_unrelated_entries(service):
other_mbid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
service._mbid_to_navidrome_id[other_mbid] = "nav-other"
service._album_mbid_cache["other:artist"] = other_mbid
service.invalidate_album_cache(ALBUM_MBID)
assert service._mbid_to_navidrome_id[other_mbid] == "nav-other"
assert service._album_mbid_cache["other:artist"] == other_mbid