func handlerFunc(endpointTypeID string, container *goldi.Container) (http.HandlerFunc, error) { h, err := container.Get(endpointTypeID) if err != nil { return nil, err } if h, ok := h.(func(http.ResponseWriter, *http.Request)); ok { return h, nil } if h, ok := h.(http.Handler); ok { return func(w http.ResponseWriter, r *http.Request) { h.ServeHTTP(w, r) }, nil } return nil, fmt.Errorf("Type %q is neither a http.Handler not a http.HandlerFunc but a %T", endpointTypeID, h) }
container *goldi.Container ) BeforeEach(func() { registry = goldi.NewTypeRegistry() config = map[string]interface{}{} container = goldi.NewContainer(registry, config) }) It("should panic if a type can not be resolved", func() { Expect(func() { container.MustGet("foo.bar") }).To(Panic()) }) It("should return an error if there was an issue generating the type", func() { container.Register("foo", goldi.NewStructType(nil)) _, err := container.Get("foo") Expect(err).To(MatchError(`goldi: error while generating type "foo": the given struct is nil`)) }) It("should resolve simple types", func() { registry.RegisterType("test_type", NewMockType) Expect(container.MustGet("test_type")).To(BeAssignableToTypeOf(&MockType{})) }) It("should build the types lazily", func() { typeID := "test_type" generator := &MockTypeFactory{} registry.RegisterType(typeID, generator.NewMockType) generatorWrapper, typeIsRegistered := registry[typeID] Expect(typeIsRegistered).To(BeTrue())