@@ -0,0 +1,63 @@
|
||||
package apitest
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"github.com/omnex/control-plane/api/internal/db"
|
||||
"github.com/omnex/control-plane/api/internal/demos"
|
||||
"github.com/omnex/control-plane/api/internal/leads"
|
||||
)
|
||||
|
||||
// Tests d'intégration GORM/PostgreSQL. Skippés si OMNEX_TEST_DATABASE_URL absent.
|
||||
// En CI : lancés contre un PostgreSQL éphémère (testcontainers-go / service kind).
|
||||
|
||||
func openTestDB(t *testing.T) *gorm.DB {
|
||||
t.Helper()
|
||||
dsn := os.Getenv("OMNEX_TEST_DATABASE_URL")
|
||||
if dsn == "" {
|
||||
t.Skip("OMNEX_TEST_DATABASE_URL non défini — test d'intégration ignoré")
|
||||
}
|
||||
gdb, err := db.Open(dsn)
|
||||
if err != nil {
|
||||
t.Fatalf("open: %v", err)
|
||||
}
|
||||
if err := db.AutoMigrate(gdb); err != nil {
|
||||
t.Fatalf("migrate: %v", err)
|
||||
}
|
||||
return gdb
|
||||
}
|
||||
|
||||
func TestLeadsGormCRUD(t *testing.T) {
|
||||
gdb := openTestDB(t)
|
||||
store := leads.NewGormStore(gdb)
|
||||
|
||||
created, err := store.Create(leads.Lead{Telegram: "Corp", Message: "hi"})
|
||||
if err != nil {
|
||||
t.Fatalf("create: %v", err)
|
||||
}
|
||||
if created.ID == "" || created.Status != leads.StatusNew {
|
||||
t.Fatalf("lead créé invalide: %+v", created)
|
||||
}
|
||||
if _, ok := store.SetStatus(created.ID, leads.StatusContacted); !ok {
|
||||
t.Fatal("setstatus a échoué")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDemosGormPoolAndCapacity(t *testing.T) {
|
||||
gdb := openTestDB(t)
|
||||
if err := db.SeedExternalPool(gdb); err != nil {
|
||||
t.Fatalf("seed pool: %v", err)
|
||||
}
|
||||
svc := demos.NewService(demos.NewGormStore(gdb), demos.NewGormPool(gdb), demos.NoopProvisioner{}, demos.Config{})
|
||||
|
||||
d, err := svc.Create("")
|
||||
if err != nil {
|
||||
t.Fatalf("create: %v", err)
|
||||
}
|
||||
if _, err := svc.Delete(d.ID); err != nil {
|
||||
t.Fatalf("delete: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user