Implements tests/_plans and previously deferred packages; updates plan README with new coverage numbers.
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package merge
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.warky.dev/wdevs/relspecgo/pkg/models"
|
|
)
|
|
|
|
func sourceWithRelationship() *models.Database {
|
|
db := models.InitDatabase("src")
|
|
s := models.InitSchema("sales")
|
|
orders := models.InitTable("orders", "sales")
|
|
orders.Tablespace = "fast"
|
|
orders.GUID = "guid-1"
|
|
orders.Relationships["fk_cust"] = &models.Relationship{
|
|
Name: "fk_cust", FromTable: "orders", ToTable: "customers",
|
|
FromColumns: []string{"cust_id"}, ToColumns: []string{"id"},
|
|
}
|
|
s.Tables = append(s.Tables, orders, models.InitTable("Audit", "sales"))
|
|
db.Schemas = append(db.Schemas, s)
|
|
return db
|
|
}
|
|
|
|
func TestCloneTable_CopiesRelationshipsTablespaceGUID(t *testing.T) {
|
|
src := sourceWithRelationship()
|
|
target := models.InitDatabase("tgt")
|
|
MergeDatabases(target, src, nil)
|
|
|
|
got := target.Schemas[0].Tables[0]
|
|
if got.Tablespace != "fast" || got.GUID != "guid-1" {
|
|
t.Errorf("tablespace/guid lost: %+v", got)
|
|
}
|
|
rel := got.Relationships["fk_cust"]
|
|
if rel == nil || rel.ToTable != "customers" {
|
|
t.Fatalf("relationship lost: %+v", got.Relationships)
|
|
}
|
|
if rel == src.Schemas[0].Tables[0].Relationships["fk_cust"] {
|
|
t.Error("relationship must be deep-copied")
|
|
}
|
|
rel.FromColumns[0] = "changed"
|
|
if src.Schemas[0].Tables[0].Relationships["fk_cust"].FromColumns[0] != "cust_id" {
|
|
t.Error("relationship columns shared with source")
|
|
}
|
|
}
|
|
|
|
func TestMerge_SkipTablesAppliesToNewSchemas(t *testing.T) {
|
|
src := sourceWithRelationship()
|
|
target := models.InitDatabase("tgt")
|
|
MergeDatabases(target, src, &MergeOptions{SkipTableNames: map[string]bool{"audit": true}})
|
|
|
|
tables := target.Schemas[0].Tables
|
|
if len(tables) != 1 || tables[0].Name != "orders" {
|
|
t.Errorf("skipped table copied into new schema: %+v", tables)
|
|
}
|
|
if len(src.Schemas[0].Tables) != 2 {
|
|
t.Error("source must not be modified")
|
|
}
|
|
}
|