package store_test import ( "context" "os" "testing" "github.com/netcell-it/deklarix/internal/store" ) // Diese Tests brauchen eine laufende Postgres-Instanz und werden ohne // DATABASE_URL übersprungen, statt eine Verbindung vorzutäuschen. func testDatabaseURL(t *testing.T) string { t.Helper() url := os.Getenv("DATABASE_URL") if url == "" { t.Skip("DATABASE_URL nicht gesetzt, überspringe Store-Integrationstest") } return url } func openTestStore(t *testing.T) *store.Store { t.Helper() url := testDatabaseURL(t) if err := store.Migrate(url); err != nil { t.Fatalf("Migrate: %v", err) } s, err := store.Open(context.Background(), url) if err != nil { t.Fatalf("Open: %v", err) } t.Cleanup(s.Close) return s } // testAccountID legt einen Mandanten an und liefert dessen ID. func testAccountID(t *testing.T, s *store.Store) string { t.Helper() acc, err := s.CreateAccount(context.Background(), "Test-Mandant") if err != nil { t.Fatalf("CreateAccount: %v", err) } return acc.ID } func TestMigrateAndOpen(t *testing.T) { url := testDatabaseURL(t) if err := store.Migrate(url); err != nil { t.Fatalf("Migrate: %v", err) } s, err := store.Open(context.Background(), url) if err != nil { t.Fatalf("Open: %v", err) } defer s.Close() var tableCount int err = s.Pool.QueryRow(context.Background(), ` SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_name = ANY($1) `, []string{"account", "app_user", "session", "audit_log", "abteilung", "werkzeug", "werkzeug_sperre", "antrag"}).Scan(&tableCount) if err != nil { t.Fatalf("query tables: %v", err) } if tableCount != 8 { t.Fatalf("expected 8 tables, got %d", tableCount) } }