fix: BOC ledger-integration — fixa robust_client för riktig DB-schema
- Uppdatera GetBalanceSheet att använda entry_date istället för period - Uppdatera GetIncomeStatement att använda entry_date istället för period - Uppdatera GetMomsReport att använda entry_date och ta bort status - Lägg till integrationstester som verifierar mot riktig DB - Alla tester passerar: GetAccounts, GetBalanceSheet, GetIncomeStatement, GetMomsReport
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user