import unittest from fastapi.testclient import TestClient import main from db import connect, create from scripts.migration_to_households import run_migration class TestHouseholdMembersV2(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self): self.conn = await connect(":memory:") await create(self.conn) await run_migration(self.conn) async def override_get_db(): try: yield self.conn finally: pass main.app.dependency_overrides[main.get_db] = override_get_db self.client = TestClient(main.app) # Register user and create a household r = self.client.post( "/api/v1/auth/register", json={"email": "members@test.com", "password": "pw", "displayName": "Member User"}, ) assert r.status_code == 200, r.text token = r.json()["accessToken"] self.headers = {"Authorization": f"Bearer {token}"} r = self.client.post("/api/v1/households", headers=self.headers, json={"name": "My Fam"}) assert r.status_code == 200, r.text self.slug = r.json()["slug"] async def asyncTearDown(self): await self.conn.close() main.app.dependency_overrides.clear() def test_list_members_returns_creator_admin(self): r = self.client.get(f"/api/v1/households/{self.slug}/members", headers=self.headers) assert r.status_code == 200, r.text items = r.json() assert isinstance(items, list) assert len(items) == 1 assert items[0]["displayName"] == "Member User" assert items[0]["role"] == "admin"