"""Entity stakes: a GP entity's interest in the funds it manages.""" from ten31portal.models import Entity, EntityType def test_stake_crud(auth_client, session): gp = Entity(name="Ten31 LLC", type=EntityType.gp) fund = Entity(name="LTPF I", type=EntityType.fund) session.add(gp) session.add(fund) session.commit() session.refresh(gp) session.refresh(fund) created = auth_client.post( f"/api/entities/{gp.id}/stakes", json={"fund_entity_id": fund.id, "ownership_pct": 20, "value_dollars": 1000}, ) assert created.status_code == 201, created.text body = created.json() assert body["fund_name"] == "LTPF I" assert body["fund_type"] == "fund" assert body["value_cents"] == 100_000 # dollars -> cents stake_id = body["id"] listed = auth_client.get(f"/api/entities/{gp.id}/stakes") assert listed.status_code == 200 assert len(listed.json()) == 1 # An entity cannot hold a stake in itself. assert auth_client.post( f"/api/entities/{gp.id}/stakes", json={"fund_entity_id": gp.id} ).status_code == 400 # Duplicate stake rejected. assert auth_client.post( f"/api/entities/{gp.id}/stakes", json={"fund_entity_id": fund.id} ).status_code == 409 assert auth_client.delete(f"/api/entities/{gp.id}/stakes/{stake_id}").status_code == 200 assert auth_client.get(f"/api/entities/{gp.id}/stakes").json() == []