package ledger import ( "context" "os" "testing" ) // TestIntegration_RobustClient tests against real ledger database // Run with: LEDGER_DB_URL=postgres://... go test -run Integration -v ./ledger func TestIntegration_RobustClient(t *testing.T) { dbURL := os.Getenv("LEDGER_DB_URL") if dbURL == "" { t.Skip("LEDGER_DB_URL not set, skipping integration test") } client, err := NewRobustClient(dbURL) if err != nil { t.Fatalf("Failed to connect to ledger DB: %v", err) } defer client.db.Close() ctx := context.Background() t.Run("GetAccounts", func(t *testing.T) { accounts, err := client.GetAccounts(ctx) if err != nil { t.Fatalf("GetAccounts failed: %v", err) } t.Logf("Found %d accounts", len(accounts)) for _, a := range accounts[:min(5, len(accounts))] { t.Logf(" %s: %s (%.2f)", a.Code, a.Name, a.Balance) } }) t.Run("GetBalanceSheet", func(t *testing.T) { bs, err := client.GetBalanceSheet(ctx, "2026-01") if err != nil { t.Fatalf("GetBalanceSheet failed: %v", err) } t.Logf("Assets: %.2f, Liabilities: %.2f, Equity: %.2f", bs.TotalAssets, bs.TotalLiabilities, bs.TotalEquity) }) t.Run("GetIncomeStatement", func(t *testing.T) { is, err := client.GetIncomeStatement(ctx, "2026-01") if err != nil { t.Fatalf("GetIncomeStatement failed: %v", err) } t.Logf("Revenue: %.2f, Expenses: %.2f, Net Income: %.2f", is.TotalRevenue, is.TotalExpense, is.NetIncome) }) t.Run("GetMomsReport", func(t *testing.T) { moms, err := client.GetMomsReport(ctx, "2026-01") if err != nil { t.Fatalf("GetMomsReport failed: %v", err) } t.Logf("Moms Ut: %.2f, Moms Att Betala: %.2f", moms.MomsUt, moms.MomsAttBetala) }) } func min(a, b int) int { if a < b { return a } return b }