public void Can_register_and_use_closed_to_closed_generic_with_configuration_api() { var configuration = new LightCoreConfiguration(); var registrations = new List<Registration> { new Registration { // LightCore.TestTypes.IRepository`1, LightCore.TestTypes ContractType = typeof (IRepository<Bar>).AssemblyQualifiedName, ImplementationType = typeof (BarRepository).AssemblyQualifiedName } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var repository = container.Resolve<IRepository<Bar>>(); Assert.That(repository, Is.Not.Null); Assert.That(repository, Is.InstanceOf<BarRepository>()); }
public void Can_register_and_use_generics_with_configuration_api() { var configuration = new LightCoreConfiguration(); var registrations = new List<Registration> { new Registration { ContractType = typeof(IFoo).AssemblyQualifiedName, ImplementationType = typeof(Foo).AssemblyQualifiedName, Arguments = new List<Argument> { new Argument { Type = "Guid", Value = "354c11f1-94e5-41b8-9a13-122e2df2b0c7" } } } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); Guid expected = new Guid("354c11f1-94e5-41b8-9a13-122e2df2b0c7"); Assert.AreEqual(expected, ((Foo)container.Resolve<IFoo>()).Arg4); }
public void Can_register_and_use_generics_with_configuration_api() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { // LightCore.TestTypes.IRepository`1, LightCore.TestTypes ContractType = typeof(IRepository <>).AssemblyQualifiedName, ImplementationType = typeof(Repository <>).AssemblyQualifiedName } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var repository = container.Resolve <IRepository <Foo> >(); repository.Should().NotBeNull(); repository.Should().BeOfType <Repository <Foo> >(); } }
public void Can_configure_and_resolve_type_registration_with_alias() { var configuration = new LightCoreConfiguration(); configuration.TypeAliases.Add(new TypeAlias { Alias = "IBar", Type = typeof(IBar).AssemblyQualifiedName }); configuration.TypeAliases.Add(new TypeAlias { Alias = "Bar", Type = typeof(Bar).AssemblyQualifiedName }); var registrations = new List<Registration> { new Registration { ContractType = "IBar", ImplementationType = "Bar", } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve<IBar>(); Assert.NotNull(bar); }
public void Can_configure_and_resolve_explicite_type_registration() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve <IBar>(); bar.Should().NotBeNull(); } }
public void Can_set_lifecycle_full_qualified() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, Lifecycle = typeof(TransientLifecycle).AssemblyQualifiedName } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve <IBar>(); var barTwo = container.Resolve <IBar>(); bar.Should().NotBeSameAs(barTwo); } }
public void Can_configure_and_resolve_with_default_transient_lifecycle() { var configuration = new LightCoreConfiguration(); var registrations = new List<Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve<IBar>(); var barTwo = container.Resolve<IBar>(); Assert.AreNotSame(bar, barTwo); }
public void Enabled_or_disable_registrations_works() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration>() { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, Enabled = "false" } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve <IBar>(); bar.Should().NotBeNull(); } }
public void Can_configure_and_resolve_with_registration_default_singleton_lifecycle() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { DefaultLifecycle = "Singleton" }; var registrations = new List <Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve <IBar>(); var barTwo = container.Resolve <IBar>(); bar.Should().BeSameAs(barTwo); } }
public void Can_configure_and_resolve_with_default_transient_lifecycle() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName } }; configuration.RegistrationGroups.Add(new RegistrationGroup() { Registrations = registrations }); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar1 = container.Resolve <IBar>(); var bar2 = container.Resolve <IBar>(); bar1.Should().BeOfType <Bar>(); bar2.Should().BeOfType <Bar>(); bar1.InstanceId.Should().NotBe(bar2.InstanceId); } }
public void Exception_is_thrown_when_a_given_active_group_was_not_found() { var configuration = new LightCoreConfiguration(); configuration.ActiveRegistrationGroups = "test"; configuration.RegistrationGroups = GetTestRegistrationGroups(); var builder = new ContainerBuilder(); Assert.Throws<ActiveGroupNotFoundException>( () => RegistrationLoader.Instance.Register(builder, configuration)); }
public void Can_register_group_configurations() { var configuration = new LightCoreConfiguration(); configuration.ActiveRegistrationGroups = "Sql"; configuration.RegistrationGroups = GetTestRegistrationGroups(); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); builder.Build(); }
public void Usage_of_global_registrations_and_grouped_registrations_work_together() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { ActiveRegistrationGroups = "Test" }; var globalRegistrations = new List <Registration>() { new Registration { ContractType = typeof(object).AssemblyQualifiedName, ImplementationType = typeof(object).AssemblyQualifiedName } }; var groupRegistrations = new List <Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName } }; configuration.Registrations = globalRegistrations; configuration.RegistrationGroups = new List <RegistrationGroup> { new RegistrationGroup { Name = "Test", Registrations = groupRegistrations } }; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var objectInstance = container.Resolve <object>(); var barInstance = container.Resolve <IBar>(); objectInstance.Should().NotBeNull(); barInstance.Should().NotBeNull(); } }
public void RegistrationLoader_throws_argument_exception_on_missing_contracttype() { lock (Locker.Lock) { var builder = new ContainerBuilder(); var configuration = new LightCoreConfiguration(); configuration.Registrations.Add(new Registration { ImplementationType = typeof(object).AssemblyQualifiedName }); Action act = () => RegistrationLoader.Instance.Register(builder, configuration); act.ShouldThrow <ArgumentException>(); } }
public void Can_resolve_active_group_configuration() { var configuration = new LightCoreConfiguration(); configuration.ActiveRegistrationGroups = "Xml"; configuration.RegistrationGroups = GetTestRegistrationGroups(); var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); Assert.IsInstanceOf<XmlFoo>(container.Resolve<IFoo>()); }
public void Exception_is_thrown_when_a_given_active_group_was_not_found() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { ActiveRegistrationGroups = "test", RegistrationGroups = GetTestRegistrationGroups() }; var builder = new ContainerBuilder(); Action act = () => RegistrationLoader.Instance.Register(builder, configuration); act.ShouldThrow <ActiveGroupNotFoundException>(); } }
public void Can_register_group_configurations() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { ActiveRegistrationGroups = "Sql", RegistrationGroups = GetTestRegistrationGroups() }; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); builder.Build(); } }
public void Can_register_and_use_named_arguments() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { ContractType = typeof(IFoo).AssemblyQualifiedName, ImplementationType = typeof(Foo).AssemblyQualifiedName, Arguments = new List <Argument> { new Argument { Name = "arg1", Value = "Peter" }, new Argument { Name = "arg2", Value = "true", Type = "System.Boolean" } } } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var foo = container.Resolve <IFoo>() as Foo; foo.Should().NotBeNull(); foo.Arg1.Should().Be("Peter"); foo.Arg2.Should().Be(true); } }
public void Can_resolve_active_group_configuration() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { ActiveRegistrationGroups = "Xml", RegistrationGroups = GetTestRegistrationGroups() }; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var actual = container.Resolve <IFoo>(); actual.Should().BeOfType <XmlFoo>(); } }
public void Can_register_and_use_named_arguments() { var configuration = new LightCoreConfiguration(); var registrations = new List<Registration> { new Registration { ContractType = typeof (IFoo).AssemblyQualifiedName, ImplementationType = typeof (Foo).AssemblyQualifiedName, Arguments = new List<Argument> { new Argument { Name = "arg1", Value = "Peter" }, new Argument { Name = "arg2", Value = "true", Type = "System.Boolean" } } } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var foo = container.Resolve<IFoo>(); Assert.IsNotNull(foo); Assert.AreEqual("Peter", ((Foo)foo).Arg1); Assert.AreEqual(true, ((Foo) foo).Arg2); }
public void Can_register_and_use_generics_with_configuration_api() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration(); var registrations = new List <Registration> { new Registration { ContractType = typeof(IFoo).AssemblyQualifiedName, ImplementationType = typeof(Foo).AssemblyQualifiedName, Arguments = new List <Argument> { new Argument { Type = "Guid", Value = "354c11f1-94e5-41b8-9a13-122e2df2b0c7" } } } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var expected = new Guid("354c11f1-94e5-41b8-9a13-122e2df2b0c7"); var actual = container.Resolve <IFoo>() as Foo; actual.Should().NotBeNull(); actual.Arg4.Should().Be(expected); } }
public void Can_register_multiple_group_configurations_registered_configuration() { lock (Locker.Lock) { var configuration = new LightCoreConfiguration { ActiveRegistrationGroups = "Xml, Test", RegistrationGroups = GetTestRegistrationGroups() }; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var actualFoo = container.Resolve <IFoo>(); var actualLorem = container.Resolve <ILorem>(); actualFoo.Should().BeOfType <XmlFoo>(); actualLorem.Should().BeOfType <TestLorem>(); } }
public void Enabled_or_disable_registrations_works() { var configuration = new LightCoreConfiguration(); var registrations = new List<Registration>() { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName, Enabled = "false" } }; configuration.Registrations = registrations; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var bar = container.Resolve<IBar>(); Assert.NotNull(bar); }
public void RegistrationLoader_throws_argument_exception_on_missing_contracttype() { var builder = new ContainerBuilder(); var configuration = new LightCoreConfiguration(); configuration.Registrations.Add(new Registration { ImplementationType = typeof(object).AssemblyQualifiedName }); Assert.That(() => RegistrationLoader.Instance.Register(builder, configuration), Throws.ArgumentException); }
public void Usage_of_global_registrations_and_grouped_registrations_work_together() { var configuration = new LightCoreConfiguration(); configuration.ActiveRegistrationGroups = "Test"; var globalRegistrations = new List<Registration>() { new Registration { ContractType = typeof(object).AssemblyQualifiedName, ImplementationType = typeof(object).AssemblyQualifiedName } }; var groupRegistrations = new List<Registration> { new Registration { ContractType = typeof(IBar).AssemblyQualifiedName, ImplementationType = typeof(Bar).AssemblyQualifiedName } }; configuration.Registrations = globalRegistrations; configuration.RegistrationGroups = new List<RegistrationGroup> { new RegistrationGroup { Name = "Test", Registrations = groupRegistrations } }; var builder = new ContainerBuilder(); RegistrationLoader.Instance.Register(builder, configuration); var container = builder.Build(); var objectInstance = container.Resolve<object>(); var barInstance = container.Resolve<IBar>(); Assert.NotNull(objectInstance); Assert.NotNull(barInstance); }