import pytest from fastapi.testclient import TestClient from tag_albums.app import create_app from tag_albums.config import Settings from tag_albums.library import Album from tag_albums.store import Store TOKEN = "test-token" AUTH = {"Authorization": f"Bearer {TOKEN}"} class FakeLibrary: def __init__(self): self.queries = [] self.fetched = [] self.images = {"http://img/1": (b"\x89PNG-lateralus", "image/png")} def search_albums(self, query, limit=12): self.queries.append(query) return [Album(artist="Tool", album="Lateralus", image="http://img/1")] def find_album(self, artist, album): found = self.search_albums(album)[0] return found if (found.artist, found.album) == (artist, album) else None def fetch_image(self, url): self.fetched.append(url) if url not in self.images: raise ValueError("no such image") return self.images[url] @pytest.fixture def store(tmp_path): s = Store(str(tmp_path / "test.sqlite3")) yield s s.close() @pytest.fixture def library(): return FakeLibrary() @pytest.fixture def client(store, library): settings = Settings(db_path=":unused:", api_token=TOKEN, ha_url="http://ha", ha_token="x") return TestClient(create_app(settings, store=store, library=library))