feat(PORT-004C): seed workspace routes from portfolio settings
This commit is contained in:
@@ -98,3 +98,64 @@ def test_workspace_settings_round_trip_uses_workspace_storage(tmp_path, monkeypa
|
||||
assert response.status_code == 200
|
||||
assert "Settings" in response.text
|
||||
assert "9,999" in response.text or "9999" in response.text
|
||||
|
||||
|
||||
def test_workspace_pages_use_workspace_scoped_navigation_links(tmp_path, monkeypatch) -> None:
|
||||
repo = _install_workspace_repo(tmp_path, monkeypatch)
|
||||
workspace_id = str(uuid4())
|
||||
repo.create_workspace(workspace_id)
|
||||
|
||||
with TestClient(app) as client:
|
||||
response = client.get(f"/{workspace_id}")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert f"/{workspace_id}/hedge" in response.text
|
||||
assert f"/{workspace_id}/backtests" in response.text
|
||||
assert f"/{workspace_id}/event-comparison" in response.text
|
||||
assert f"/{workspace_id}/settings" in response.text
|
||||
|
||||
|
||||
def test_workspace_routes_seed_page_defaults_from_workspace_portfolio_config(tmp_path, monkeypatch) -> None:
|
||||
repo = _install_workspace_repo(tmp_path, monkeypatch)
|
||||
workspace_id = str(uuid4())
|
||||
config = repo.create_workspace(workspace_id)
|
||||
config.entry_basis_mode = "weight"
|
||||
config.entry_price = 4_400.0
|
||||
config.gold_ounces = 220.0
|
||||
config.gold_value = 968_000.0
|
||||
config.loan_amount = 222_000.0
|
||||
config.margin_threshold = 0.80
|
||||
config.monthly_budget = 12_345.0
|
||||
repo.save_portfolio_config(workspace_id, config)
|
||||
|
||||
with TestClient(app) as client:
|
||||
hedge_response = client.get(f"/{workspace_id}/hedge")
|
||||
backtests_response = client.get(f"/{workspace_id}/backtests")
|
||||
event_response = client.get(f"/{workspace_id}/event-comparison")
|
||||
redirect_response = client.get("/backtests", cookies={"workspace_id": workspace_id}, follow_redirects=False)
|
||||
|
||||
assert hedge_response.status_code == 200
|
||||
assert "Monthly hedge budget" in hedge_response.text
|
||||
assert "12,345" in hedge_response.text or "12345" in hedge_response.text
|
||||
assert "968,000" in hedge_response.text or "968000" in hedge_response.text
|
||||
assert "4,400.00/oz" in hedge_response.text or "4400.00/oz" in hedge_response.text
|
||||
assert "220 oz" in hedge_response.text
|
||||
assert "222,000" in hedge_response.text or "222000" in hedge_response.text
|
||||
assert "80.0%" in hedge_response.text
|
||||
|
||||
assert backtests_response.status_code == 200
|
||||
assert "Workspace defaults seed underlying units, loan amount, and margin threshold." in backtests_response.text
|
||||
assert "9680" in backtests_response.text or "9,680" in backtests_response.text
|
||||
assert "222000" in backtests_response.text or "222,000" in backtests_response.text
|
||||
assert "0.8" in backtests_response.text or "80.0%" in backtests_response.text
|
||||
|
||||
assert event_response.status_code == 200
|
||||
assert "Workspace defaults seed underlying units, loan amount, and margin threshold." in event_response.text
|
||||
assert "Underlying units" in event_response.text
|
||||
assert "Loan amount" in event_response.text
|
||||
assert "222,000" in event_response.text or "222000" in event_response.text
|
||||
assert "9,680" in event_response.text or "9680" in event_response.text
|
||||
assert "80.0%" in event_response.text
|
||||
|
||||
assert redirect_response.status_code in {302, 303, 307}
|
||||
assert redirect_response.headers["location"] == f"/{workspace_id}/backtests"
|
||||
|
||||
Reference in New Issue
Block a user