var ( registry goldi.TypeRegistry config map[string]interface{} container *goldi.Container validator *validation.ContainerValidator ) BeforeEach(func() { registry = goldi.NewTypeRegistry() config = map[string]interface{}{} container = goldi.NewContainer(registry, config) validator = validation.NewContainerValidator() }) It("should return an error if an invalid type was registered", func() { registry.Register("main_type", goldi.NewFuncReferenceType("not_existent", "type")) Expect(validator.Validate(container)).NotTo(Succeed()) }) It("should return an error when parameter has not been set", func() { typeDef := goldi.NewType(NewMockTypeWithArgs, "hello world", "%param%") registry.Register("main_type", typeDef) Expect(validator.Validate(container)).NotTo(Succeed()) }) It("should return an error when a dependend type has not been registered", func() { typeDef := goldi.NewType(NewTypeForServiceInjection, "@injected_type") registry.Register("main_type", typeDef)
generatorWrapper, typeIsRegistered := registry[typeID] Expect(typeIsRegistered).To(BeTrue()) Expect(generatorWrapper).NotTo(BeNil()) firstResult := container.MustGet(typeID) secondResult := container.MustGet(typeID) thirdResult := container.MustGet(typeID) Expect(firstResult == secondResult).To(BeTrue()) Expect(firstResult == thirdResult).To(BeTrue()) }) It("should pass static parameters as arguments when generating types", func() { typeID := "test_type" typeDef := goldi.NewType(NewMockTypeWithArgs, "parameter1", true) registry.Register(typeID, typeDef) generatedType := container.MustGet("test_type") Expect(generatedType).NotTo(BeNil()) Expect(generatedType).To(BeAssignableToTypeOf(&MockType{})) generatedMock := generatedType.(*MockType) Expect(generatedMock.StringParameter).To(Equal("parameter1")) Expect(generatedMock.BoolParameter).To(Equal(true)) }) It("should be able to use parameters as arguments when generating types", func() { typeID := "test_type" typeDef := goldi.NewType(NewMockTypeWithArgs, "%parameter1%", "%parameter2%") registry.Register(typeID, typeDef)