package app import ( "context" "encoding/json" "testing" "github.com/gin-gonic/gin" "kra/pkg/module" platformtask "kra/pkg/task" ) func TestTaskRegistryRegistersStaticModuleMethods(t *testing.T) { method := platformtask.Method{ Name: "test.static", Run: func(context.Context, json.RawMessage) error { return nil }, } catalog := module.Catalog{Definitions: []module.Definition{{Tasks: []platformtask.Method{method}}}} registry := TaskRegistry(catalog) if _, ok := registry.Lookup(method.Name); !ok { t.Fatalf("method %q was not registered", method.Name) } } type testRouteRegistrar struct{ called bool } func (registrar *testRouteRegistrar) RegisterRoutes(*gin.RouterGroup, *gin.RouterGroup, *gin.Engine) { registrar.called = true } type testTaskContributor struct{ name string } func (contributor testTaskContributor) RegisterTasks(registry *platformtask.Registry) { registry.Register(platformtask.Method{ Name: contributor.name, Run: func(context.Context, json.RawMessage) error { return nil }, }) } func TestRuntimeAppliesAllContributions(t *testing.T) { registry := platformtask.NewRegistry() route := &testRouteRegistrar{} runtime := Build(Composition{ Routes: []module.RouteRegistrar{route}, Tasks: []platformtask.Contributor{testTaskContributor{name: "test.runtime"}}, }, registry) if _, ok := registry.Lookup("test.runtime"); !ok { t.Fatal("runtime task contributor was not applied") } runtime.RegisterRoutes(nil, nil, nil) if !route.called { t.Fatal("runtime route contributor was not called") } }