39 lines
920 B
Go
39 lines
920 B
Go
package schema_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"aijianzhan/platform/internal/blueprint"
|
|
"aijianzhan/platform/internal/schema"
|
|
)
|
|
|
|
func TestBuildDDLFromExample(t *testing.T) {
|
|
_, file, _, _ := runtime.Caller(0)
|
|
root := filepath.Clean(filepath.Join(filepath.Dir(file), "..", "..", ".."))
|
|
example := filepath.Join(root, "blueprint", "examples", "inventory-ledger.blueprint.json")
|
|
raw, err := os.ReadFile(example)
|
|
if err != nil {
|
|
t.Fatalf("read example: %v", err)
|
|
}
|
|
bp, err := blueprint.Parse(json.RawMessage(raw))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := bp.Validate("inventory_ledger"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
bp.AssignSchemaName(1)
|
|
stmts, err := schema.BuildPostgresDDL(bp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(stmts) < 2 {
|
|
t.Fatalf("expected schema+table ddl, got %d", len(stmts))
|
|
}
|
|
t.Logf("ddl count=%d first=%s", len(stmts), stmts[0])
|
|
}
|