44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package module
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"kra/pkg/database/migration"
|
|
"kra/pkg/task"
|
|
)
|
|
|
|
func TestCatalogCollectsContributions(t *testing.T) {
|
|
run := func(context.Context, json.RawMessage) error { return nil }
|
|
catalog := Catalog{Definitions: []Definition{
|
|
{
|
|
Name: "system",
|
|
Migrations: []migration.Step{{ID: "system_schema"}},
|
|
Surface: Surface{Menus: []Menu{{Name: "users"}}, APIs: []API{{Path: "/users"}}},
|
|
TimedTasks: []TimedTask{{Name: "system.cleanup"}},
|
|
Tasks: []task.Method{{Name: "system.cleanup", Run: run}},
|
|
},
|
|
{
|
|
Name: "orders",
|
|
Migrations: []migration.Step{{ID: "orders_schema"}},
|
|
Surface: Surface{Menus: []Menu{{Name: "orders"}}, APIs: []API{{Path: "/orders"}}},
|
|
TimedTasks: []TimedTask{{Name: "orders.expire"}},
|
|
Tasks: []task.Method{{Name: "orders.expire", Run: run}},
|
|
},
|
|
}}
|
|
|
|
if got := catalog.MigrationSteps(); len(got) != 2 || got[0].ID != "system_schema" || got[1].ID != "orders_schema" {
|
|
t.Fatalf("unexpected migrations: %#v", got)
|
|
}
|
|
if got := catalog.Surface(); len(got.Menus) != 2 || len(got.APIs) != 2 || got.Menus[1].Name != "orders" {
|
|
t.Fatalf("unexpected surface: %#v", got)
|
|
}
|
|
if got := catalog.DefaultTimedTasks(); len(got) != 2 || got[1].Name != "orders.expire" {
|
|
t.Fatalf("unexpected default tasks: %#v", got)
|
|
}
|
|
if got := catalog.TaskMethods(); len(got) != 2 || got[1].Name != "orders.expire" {
|
|
t.Fatalf("unexpected task methods: %#v", got)
|
|
}
|
|
}
|