fix: qualify corporate-action ledger reads (#36)

This commit is contained in:
2026-09-13 22:02:43 +09:00
committed by GitHub
parent c7d8235bde
commit 8841bdd441
12 changed files with 290 additions and 22 deletions
+35 -1
View File
@@ -7,7 +7,7 @@ Covers AC-1~11 from REQ-043.
from __future__ import annotations
from contextlib import ExitStack
from datetime import datetime, timezone
from datetime import UTC, datetime, timezone
from unittest.mock import MagicMock, patch
import pytest
@@ -286,6 +286,40 @@ class TestAC2PartialSellWacUnchanged:
assert resp.json()["total_cost_basis"] == pytest.approx(500_000.0)
def test_corporate_action_row_keeps_holdings_cost_basis_http_200() -> None:
buy = _make_entry(
ledger_entry_id=1,
side="buy",
quantity=20,
price=100,
executed_at=datetime(2026, 9, 1, tzinfo=UTC),
)
corporate_action = LedgerEntry(
ledger_entry_id=2,
portfolio_id=_PORTFOLIO_ID,
source="corporate_action",
side="stock_consolidation",
quantity=10,
price=200,
recorded_at=datetime(2026, 9, 2, tzinfo=UTC),
corporate_action={"action_type": "stock_consolidation"},
)
repo = _make_service_repo(
portfolio=_make_portfolio(asset_quantity=10),
trades=[buy, corporate_action],
)
with _with_repo(repo):
response = _make_client(_make_settings()).get(
_PATH,
headers={"Authorization": "Bearer tok"},
)
assert response.status_code == 200
assert response.json()["cost_basis_per_unit"] == pytest.approx(100)
assert response.json()["total_cost_basis"] == pytest.approx(1000)
# ---------------------------------------------------------------------------
# AC-3: user read_token (owner) → 200 + normal response
# ---------------------------------------------------------------------------