Skip to main content
Glama
datamoc

Wealthfolio MCP Server

by datamoc
test_fixes.py5.91 kB
#!/usr/bin/env python3 """ Test des corrections de bugs dans mcp_server.py """ import sqlite3 import sys DB_PATH = r"C:\Users\miche\AppData\Roaming\com.teymz.wealthfolio\app.db" def test_get_total_net_worth_query(): """Test que la requête de get_total_net_worth retourne bien les actifs financiers""" print("=" * 70) print("TEST 1: get_total_net_worth - Requête actifs financiers") print("=" * 70) conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row c = conn.cursor() # Requête corrigee c.execute(""" SELECT CAST(total_value AS REAL) as total_value, base_currency FROM daily_account_valuation WHERE account_id = 'TOTAL' AND valuation_date = (SELECT MAX(valuation_date) FROM daily_account_valuation WHERE account_id = 'TOTAL') """) result = c.fetchone() if result: financial_assets = result['total_value'] currency = result['base_currency'] print(f"[OK] Actifs financiers: {financial_assets:,.2f} {currency}") if financial_assets > 0: print("[OK] SUCCES: La requête retourne les actifs financiers") success = True else: print("[FAIL] ECHEC: Les actifs financiers sont a 0") success = False else: print("[FAIL] ECHEC: Aucun resultat retourne") success = False conn.close() print() return success def test_get_portfolio_summary_query(): """Test que la requête de get_portfolio_summary retourne bien les actifs financiers""" print("=" * 70) print("TEST 2: get_portfolio_summary - Requête actifs financiers") print("=" * 70) conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row c = conn.cursor() # Requête corrigee c.execute(""" SELECT CAST(total_value AS REAL) as total_value, base_currency FROM daily_account_valuation WHERE account_id = 'TOTAL' AND valuation_date = (SELECT MAX(valuation_date) FROM daily_account_valuation WHERE account_id = 'TOTAL') """) result = c.fetchone() if result: financial_assets = result['total_value'] currency = result['base_currency'] print(f"[OK] Actifs financiers: {financial_assets:,.2f} {currency}") if financial_assets > 0: print("[OK] SUCCES: La requête retourne les actifs financiers") success = True else: print("[FAIL] ECHEC: Les actifs financiers sont a 0") success = False else: print("[FAIL] ECHEC: Aucun resultat retourne") success = False conn.close() print() return success def test_get_accounts_summary_query(): """Test que la requête de get_accounts_summary retourne tous les comptes""" print("=" * 70) print("TEST 3: get_accounts_summary - Requête avec dates par compte") print("=" * 70) conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row c = conn.cursor() # Compter le total de comptes actifs (hors TOTAL) c.execute(""" SELECT COUNT(DISTINCT id) as total FROM accounts WHERE id != 'TOTAL' AND is_active = 1 """) total_accounts = c.fetchone()['total'] print(f"Total comptes actifs (hors TOTAL): {total_accounts}") # Requête corrigee (avec date max par compte) c.execute(""" SELECT a."group" as groupe, COUNT(DISTINCT a.id) as nb_comptes, SUM(CAST(v.total_value AS REAL)) as valeur_totale FROM daily_account_valuation v JOIN accounts a ON v.account_id = a.id WHERE v.valuation_date = ( SELECT MAX(valuation_date) FROM daily_account_valuation v2 WHERE v2.account_id = v.account_id ) AND a.id != 'TOTAL' AND a.is_active = 1 GROUP BY a."group" """) groups = c.fetchall() accounts_in_query = sum(g['nb_comptes'] for g in groups) print(f"Comptes retournes par la requête: {accounts_in_query}") if accounts_in_query == total_accounts: print(f"[OK] SUCCES: Tous les {total_accounts} comptes sont inclus") success = True else: print(f"[FAIL] ECHEC: {total_accounts - accounts_in_query} comptes manquants") success = False # Afficher le resume par groupe print("\nRepartition par groupe:") total_value = 0 for g in groups: print(f" {g['groupe'] or 'Sans groupe':20}: {g['nb_comptes']:2} comptes | {g['valeur_totale']:12,.2f} EUR") total_value += g['valeur_totale'] print(f" {'TOTAL':20}: {accounts_in_query:2} comptes | {total_value:12,.2f} EUR") conn.close() print() return success def main(): print("\nTESTS DES CORRECTIONS DE BUGS\n") results = [] results.append(("get_total_net_worth query", test_get_total_net_worth_query())) results.append(("get_portfolio_summary query", test_get_portfolio_summary_query())) results.append(("get_accounts_summary query", test_get_accounts_summary_query())) # Resume print("=" * 70) print("RÉSUMÉ DES TESTS") print("=" * 70) for test_name, success in results: status = "[OK] PASS" if success else "[FAIL] FAIL" print(f"{status}: {test_name}") total_passed = sum(1 for _, success in results if success) total_tests = len(results) print(f"\n{total_passed}/{total_tests} tests reussis") if total_passed == total_tests: print("\n[OK] Tous les tests sont passes! Les bugs sont corriges.\n") return 0 else: print(f"\n[FAIL] {total_tests - total_passed} test(s) echoue(s)\n") return 1 if __name__ == "__main__": sys.exit(main())

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/datamoc/WFmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server