soulsync/tests/search
BoulderBadgeDad 9772d5313c Add #775: resolve a pasted metadata link/ID instead of searching
New 'Link / ID' input on the Search page: paste a Spotify / Apple Music /
MusicBrainz / Deezer URL (or a bare ID) and it's looked up directly on the
owning source — no fuzzy search, no scoring.

- core/search/by_id.py: source-agnostic parser (URL domain/path or bare-ID
  format -> source,kind,id; numeric IDs fan out, first hit wins) + per-source
  get-by-id dispatch + adapters projecting each provider's dict onto the
  standard album/track card shape.
- /api/enhanced-search/by-id: thin additive route over resolve_identifier.
- Frontend: dedicated input that adopts the resolved source as active and
  renders through the existing dropdown + download/import flow.

Purely additive — existing files are insertion-only; the resolver runs only
behind the new route. 29 seam tests cover parsing, shaping, fan-out, and
not-found.
2026-06-05 06:32:45 -07:00
..
__init__.py Lift /api/search and /api/enhanced-search/* into core/search/ 2026-04-27 15:07:11 -07:00
test_search_basic.py Basic search: visual overhaul + per-source picker in hybrid mode 2026-05-28 10:22:07 -07:00
test_search_by_id.py Add #775: resolve a pasted metadata link/ID instead of searching 2026-06-05 06:32:45 -07:00
test_search_cache.py Search cache: preserve falsy provider returns to match original behavior 2026-04-27 15:19:52 -07:00
test_search_library_check.py Lift /api/search and /api/enhanced-search/* into core/search/ 2026-04-27 15:07:11 -07:00
test_search_orchestrator.py Cin-6: Rename soulseek_client global → download_orchestrator 2026-05-04 23:23:32 -07:00
test_search_sources.py feat(import): show MusicBrainz variants 2026-05-24 21:29:22 +03:00
test_search_stream.py Cin-6: Rename soulseek_client global → download_orchestrator 2026-05-04 23:23:32 -07:00