soulsync/tests/discovery
BoulderBadgeDad cf2b4d7d38 Playlist sync: honor the DURABLE manual match, not just the volatile cache
Find & Add was being forgotten on the next auto-sync. It persists two ways — a fast
sync_match_cache override AND a durable manual_library_match (#787) that survives a
rescan — but BOTH sync matchers (services.sync_service._find_track_in_media_server and
the DB-only fallback) only consulted the volatile cache. A library rescan wipes that
cache, so the next 'replace' auto-sync re-matched the track from scratch and the user
had to Find & Add it again.

Both matchers now fall back to the durable manual match when the cache misses
(self-healing a stale library id via the stored file path), exactly like the compare
view already does via resolve_durable_match_server_id. So a Find & Add pairing sticks
across rescans + auto-syncs. Seam tests: cache-wiped→durable hit, stale-id self-heal,
no-match→fuzzy fall-through.
2026-06-21 18:15:20 -07:00
..
__init__.py
test_cancel_sync_idempotent.py #702: make mirrored-playlist cancel/reset/delete idempotent (un-wedge LB weekly sync) 2026-06-11 12:55:55 -07:00
test_discovery_beatport.py
test_discovery_deezer.py
test_discovery_endpoints.py #702: make mirrored-playlist cancel/reset/delete idempotent (un-wedge LB weekly sync) 2026-06-11 12:55:55 -07:00
test_discovery_listenbrainz.py
test_discovery_playlist.py Fix #785: file/CSV playlists fail to match (raw 'Artist - Title' titles) 2026-06-04 21:13:23 -07:00
test_discovery_spotify_public.py
test_discovery_sync.py Sync: append mode preserves the playlist image like reconcile (#811) 2026-06-07 23:25:42 -07:00
test_discovery_tidal.py
test_discovery_youtube.py
test_manual_match.py #799: add equivalence proof that should_rediscover == original pre-scan 2026-06-05 11:17:49 -07:00
test_quality_scanner_typed_album.py
test_similar_artists_library_filter.py
test_sync_database_only_matcher.py Playlist sync: honor the DURABLE manual match, not just the volatile cache 2026-06-21 18:15:20 -07:00