test_schema.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from hermes_mcp.store import get_decision_profile, init_db, list_decision_profiles, list_strategy_assignments, list_strategy_groups, table_counts, upsert_concern, upsert_decision_profile, upsert_strategy_assignment, upsert_strategy_group
  2. def test_schema_tables_exist():
  3. init_db()
  4. counts = table_counts()
  5. assert set(counts) == {
  6. "concerns",
  7. "decision_profiles",
  8. "strategy_groups",
  9. "strategy_assignments",
  10. "cycles",
  11. "observations",
  12. "states",
  13. "narratives",
  14. "decisions",
  15. "actions",
  16. "coverage_gaps",
  17. "regime_samples",
  18. }
  19. def test_profile_group_assignment_helpers_round_trip():
  20. upsert_decision_profile(id="profile-grid", name="Grid profile", config={"short_term_trend_min_score": 0.28, "hold_rebalancer_until_cooldown": False})
  21. upsert_concern(
  22. id="a1:xrpusd",
  23. account_id="a1",
  24. market_symbol="xrpusd",
  25. base_currency="XRP",
  26. quote_currency="USD",
  27. strategy_id="grid-1",
  28. decision_profile_id="profile-grid",
  29. source="test",
  30. )
  31. upsert_strategy_group(id="group-1", concern_id="a1:xrpusd", name="XRP spot cluster", strategy_family="mixed", decision_profile_id="profile-grid")
  32. upsert_strategy_assignment(id="assign-1", strategy_group_id="group-1", strategy_id="grid-1", strategy_type="grid_trader", role="primary")
  33. profile = get_decision_profile(profile_id="profile-grid")
  34. assert profile is not None
  35. assert profile["id"] == "profile-grid"
  36. assert list_decision_profiles()[0]["id"] == "profile-grid"
  37. assert list_strategy_groups(concern_id="a1:xrpusd")[0]["id"] == "group-1"
  38. assert list_strategy_assignments(strategy_group_id="group-1")[0]["id"] == "assign-1"