优化结构
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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 := Runtime(RuntimeContributions{
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user