Files
omnex/control-plane/api/internal/test/integration_test.go
T
Nuxgrid 6b4274d12b
docker-publish / publish (push) Failing after 14m14s
feat: add api
2026-07-27 16:06:19 +02:00

64 lines
1.6 KiB
Go

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)
}
}