"""TDD — users agent listing must not query via commit_meta JSON path.""" from __future__ import annotations import pytest from datetime import datetime, timezone from sqlalchemy.ext.asyncio import AsyncSession from musehub.db import musehub_repo_models as db from tests.factories import create_repo from muse.core.types import blob_id def _utc() -> datetime: return datetime.now(tz=timezone.utc) async def _add_commit(session: AsyncSession, repo_id: str, seed: str, **kwargs: typing.Any) -> None: row = db.MusehubCommit( commit_id=blob_id(seed.encode()), branch="dev", parent_ids=[], message=f"feat: {seed}", author="gabriel", timestamp=_utc(), **kwargs, ) session.add(row) session.add(db.MusehubCommitRef(repo_id=repo_id, commit_id=row.commit_id)) await session.commit() # --------------------------------------------------------------------------- # U1 — agent card listing queries agent_id column, not commit_meta JSON path # --------------------------------------------------------------------------- @pytest.mark.asyncio async def test_u1_agent_listing_uses_column_not_json_path( db_session: AsyncSession, ) -> None: from musehub.api.routes.musehub.users import _query_agent_fleet repo = await create_repo(db_session, owner="gabriel", visibility="public") await _add_commit(db_session, repo.repo_id, "usr-agent-c1", agent_id="claude-code", model_id="claude-sonnet-4-6") await _add_commit(db_session, repo.repo_id, "usr-agent-c2", agent_id="claude-code", model_id="claude-sonnet-4-6") await _add_commit(db_session, repo.repo_id, "usr-human-c1", agent_id="", model_id="") results = await _query_agent_fleet(db_session, "gabriel", repo.owner_user_id) assert len(results) == 1 assert results[0].agent_id == "claude-code" assert results[0].commit_count == 2