// Integrations-Test-Beispiel (QA-01 Akzeptanzkriterium 1/Prüfung 2): // echte Postgres-Instanz, folgt derselben Testhost-Konvention wie // DMS/Archive/Core (TEST_TENANT_DSN, t.Cleanup, geteilte physische // Instanz auf 192.168.1.131 — siehe project-nexarch-test-infra). package example import ( "context" "os" "testing" "github.com/jackc/pgx/v5/pgxpool" ) func setupTest(t *testing.T) *pgxpool.Pool { t.Helper() dsn := os.Getenv("TEST_TENANT_DSN") if dsn == "" { t.Skip("TEST_TENANT_DSN nicht gesetzt, Integrationstest übersprungen") } ctx := context.Background() pool, err := pgxpool.New(ctx, dsn) if err != nil { t.Fatalf("pool: %v", err) } t.Cleanup(func() { pool.Close() }) if _, err := pool.Exec(ctx, ` CREATE TABLE IF NOT EXISTS example_addresses ( address TEXT PRIMARY KEY ); `); err != nil { t.Fatalf("schema: %v", err) } t.Cleanup(func() { _, _ = pool.Exec(context.Background(), `TRUNCATE example_addresses`) }) return pool } func TestAddressStore_SaveAndCheckExists(t *testing.T) { pool := setupTest(t) store := NewAddressStore(pool) ctx := context.Background() normalized, err := store.SaveNormalized(ctx, "Kunde@Beispiel.DE") if err != nil { t.Fatalf("savenormalized: %v", err) } if normalized != "Kunde@beispiel.de" { t.Fatalf("erwartet normalisierte adresse, habe %q", normalized) } exists, err := store.Exists(ctx, normalized) if err != nil { t.Fatal(err) } if !exists { t.Fatal("erwartet real gespeicherte adresse") } notExists, err := store.Exists(ctx, "unbekannt@beispiel.de") if err != nil { t.Fatal(err) } if notExists { t.Fatal("nie gespeicherte adresse haette nicht existieren duerfen") } }