public void Add2_GetWhatYouSet_InstanceOf() { int maxConnections = 1; //Arrange var container = IocServicelet.CreateContainer(); //Act //different ways of adding services container.GetRootContainer() .Add <IEmployee, Employee1>(); container.GetSharedContainer() .Add <ICustomerRepository, CustomerRepository>() /*this depends on the IDbContext*/ .Add <IDbContext>(() => new AdventureDbContext(maxConnections)); //Act var provider = container.ServiceProvider; var employee = provider.GetService <IEmployee>(); //Assert Assert.IsNotNull(employee); }
public void Setup() { //Configure method must be invoked, even though if there's no auto mapping required. var configRef = IocServicelet.Configure(config => { config.AddServices(opt => { }); }); configRef.GetServiceFactory().Add <ICustomer, CustomerService>(); }
public void Add_GetAllContracts_Count() { //Arrange var container = IocServicelet.CreateContainer(); int employeeId = 5; //Act //different ways of adding services container.GetRootContainer() .Add <IEmployee>(() => new Employee1(), "Employee1") .Add <IEmployee>(() => new Employee2(), "Employee2") .Add <IEmployee>(typeof(Employee3), "Employee3") .Add <IEmployee, SeniorEmployee>("Senior") .Add <IExecutive>(typeof(Executive)) .Add <IEmployee>(() => new Employee(employeeId)) .Add <ICustomer, CustomerService>(); /*this depends on the ICustomerRepository*/ container.GetSharedContainer() .Add <ICustomerRepository, CustomerRepository>() /*this depends on the IDbContext*/ .Add <IDbContext>(() => new AdventureDbContext()) ; var provider = container.ServiceProvider; var contracts = provider.GetRootServiceFactory().GetAllInterfaces(); Assert.AreEqual(3, contracts.Count()); }
public void ExternalAttribute() { //Arrange var container = IocServicelet.CreateContainer(config => { config.AddServices(service => { service.AddDependencies(opt => { opt.Name = "C1"; opt.AddDependencies(dopt => { dopt.Name = "C2"; }); }); }); }); container.GetRootContainer().Add <ILevel0, Level0>() .Add <ILevel2, Level2>(); container.GetDependencyContainer("C1").Add <ILevel1, Level1>(); container.GetDependencyContainer("C2").Add <ILevel3, Level3>(); //Act TestDelegate test = () => container.ServiceProvider.GetService <ILevel0>(); //Assert Assert.DoesNotThrow(test); }
public void RegisterServices() { var configRef = IocServicelet.Configure(config => { }); configRef.GetServiceFactory().Add <ICustomer, CustomerService>() .Add <ICustomer, PlatinumCustomerService>("Platinum"); }
public void Replace_GetWhatYouSet_InstanceOf() { //Arrange var container = IocServicelet.CreateContainer(); //Act container.GetRootContainer().Replace <IEmployee, Employee>() .Replace <IEmployee>(() => new Employee1(), "Employee1") .Replace <IEmployee>(() => new Employee2(), "Employee2") .Replace <IEmployee>(typeof(Employee3), "Employee3") .Replace <IEmployee, SeniorEmployee>("Senior") .Replace <IExecutive>(typeof(Executive)); var provider = container.ServiceProvider; var employee = provider.GetService <IEmployee>(); var employee1 = provider.GetService <IEmployee>("Employee1"); var employee2 = provider.GetService <IEmployee>("Employee2"); var employee3 = provider.GetService <IEmployee>("Employee3"); var seniorEmployee = container.ServiceProvider.GetService <IEmployee>("Senior"); var executive = provider.GetService <IExecutive>(); var executive1 = provider.GetService <IExecutive>("NoExecutive"); //Assert Assert.IsInstanceOf <Employee>(employee); Assert.IsInstanceOf <Employee1>(employee1); Assert.IsInstanceOf <Employee2>(employee2); Assert.IsInstanceOf <Employee3>(employee3); Assert.IsInstanceOf <SeniorEmployee>(seniorEmployee); Assert.IsInstanceOf <Executive>(executive); Assert.IsNull(executive1); }
public void ReusableInstance() { var container = IocServicelet.CreateContainer(config => { config.AddServices(service => { service.AddDependencies(opt => { opt.Name = "C1"; }); }); }); container.GetRootContainer().Add <ILevel0, Level0>(); container.GetDependencyContainer("C1") .Add <ILevel1, Level1>() .Add <ILevel2, Level2>() .Add <ILevel3>(() => new Level3("TEst")); TestDelegate test = () => container.ServiceProvider.GetService <ILevel0>(); Assert.DoesNotThrow(test); }
private void RegisterServices() { var configRef = IocServicelet.Configure(config => { config.UseRemoteServices("http://localhost:65039/serviceapi"); }); }
public void Config() { //Configure remote services IocServicelet.Configure(config => { config.UseRemoteServices(gatewayBaseUrl: "http://localhost:63488/serviceapi"); }); }
public static ServicePostConfiguration Configure(Action <ServiceConfig> configuration) { var config = IocServicelet.CreateIocContainer(configuration); ClientIocContainer.IoC = config.GetIocContainer(); return(config); }
public void Add_InvalidServiceType_ThrowsException() { //Arrange var container = IocServicelet.CreateContainer(config => { /*No auto setup*/ }); //Act TestDelegate test = () => container.GetRootContainer().Add <IEmployee>(typeof(Executive)); //Assert Assert.Throws <InvalidServiceTypeException>(test); }
public void Replace_InvalidServiceType_ThrowsException() { //Arrange var container = IocServicelet.CreateContainer(); //Act TestDelegate test = () => container.GetRootContainer().Replace <IEmployee>(typeof(Executive)); //Assert Assert.Throws <InvalidServiceTypeException>(test); }
public static IocContainer Configure() { var appDependencies = ConfigExtension.DeserializeConfig(); var container = IocServicelet.Configure(config => { ConfigExtension.ConfigFromObject(config, appDependencies); }); ConfigExtension.ConfigAddition(container, appDependencies); return(container); }
private void RegisterServices() { var configRef = IocServicelet.Configure(config => { config.AddServices(service => { service.Assemblies = new[] { "Org.App.BusinessService" }; service.AddDependencies(data => { data.Assemblies = new[] { "Org.App.DataService" }; }); service.StrictMode = true; }); }); }
public void Add_GetWhatYouSet_InstanceOf() { //Arrange var container = IocServicelet.CreateContainer(); int employeeId = 5; //Act //different ways of adding services container.GetRootContainer() .Add <IEmployee>(() => new Employee1(), "Employee1") .Add <IEmployee>(() => new Employee2(), "Employee2") .Add <IEmployee>(typeof(Employee3), "Employee3") .Add <IEmployee, SeniorEmployee>("Senior") .Add <IExecutive>(typeof(Executive)) .Add <IEmployee>(() => new Employee(employeeId)) .Add <ICustomer, CustomerService>(); /*this depends on the ICustomerRepository*/ container.GetSharedContainer() .Add <ICustomerRepository, CustomerRepository>() /*this depends on the IDbContext*/ .Add <IDbContext>(() => new AdventureDbContext()) ; var provider = container.ServiceProvider; var employee = provider.GetService <IEmployee>(); var employee1 = provider.GetService <IEmployee>("Employee1"); var employee2 = provider.GetService <IEmployee>("Employee2"); var employee3 = provider.GetService <IEmployee>("Employee3"); var seniorEmployee = container.ServiceProvider.GetService <IEmployee>("Senior"); var executive = provider.GetService <IExecutive>(); var executive1 = provider.GetService <IExecutive>("NoExecutive"); var specialCustomer = provider.GetService <ICustomer>(); //Assert Assert.IsInstanceOf <Employee>(employee); Assert.IsInstanceOf <Employee1>(employee1); Assert.IsInstanceOf <Employee2>(employee2); Assert.IsInstanceOf <Employee3>(employee3); Assert.IsInstanceOf <SeniorEmployee>(seniorEmployee); Assert.IsInstanceOf <Executive>(executive); Assert.IsInstanceOf <CustomerService>(specialCustomer); //write assert to validate repository and dbcontext Assert.IsNull(executive1); }
public void Optional_Attribute_DependecyNull() { //Arrange var container = IocServicelet.CreateContainer(); //Act //different ways of adding services container.GetRootContainer().Add <IEmployee, Employee>(); var provider = container.ServiceProvider; var employee = provider.GetService <IEmployee>(); //Assert Assert.IsInstanceOf <Employee>(employee); Assert.IsNull(employee.Address); }
public void MapServiceAttribute_Shared_Inject() { //Arrange var container = IocServicelet.CreateContainer(); container.GetRootContainer().Add <IEmployee, Employee>(); container.GetSharedContainer().Add <IExecutive, CEO>("CEO") .Add <IExecutive, CTO>("CTO"); //Act var employee = container.ServiceProvider.GetService <IEmployee>(); //Assert Assert.IsInstanceOf <CEO>(employee.CEO); Assert.IsInstanceOf <CTO>(employee.CTO); }
public void CreateIocContainer_AddDifferentServices_GetAssignedInstances() { //Arrange var ioc1 = IocServicelet.CreateContainer(config => { /*No auto setup*/ }); var ioc2 = IocServicelet.CreateContainer(config => { /*No auto setup*/ }); ioc1.GetRootContainer().Add <ICustomer, CustomerServiceWithNoRepo>(); ioc2.GetRootContainer().Add <ICustomer, Helper.CustomerService2>(); ioc2.GetSharedContainer().Add <ICustomerRepository, CustomerRepository>() .Add <IDbContext, AdventureDbContext>(); //Act var ioc1Customer = ioc1.ServiceProvider.GetService <ICustomer>(); var ioc2Customer = ioc2.ServiceProvider.GetService <ICustomer>(); //Assert Assert.IsInstanceOf <CustomerServiceWithNoRepo>(ioc1Customer); Assert.IsInstanceOf <Helper.CustomerService2>(ioc2Customer); }
public void MapServiceAttribute_Dependency_Inject() { //Arrange var container = IocServicelet.CreateContainer(config => { config.AddServices(s => s.AddDependencies(opt => { opt.Name = "Data"; })); }); //Act //different ways of adding services container.GetRootContainer().Add <IEmployee, Employee>(); container.GetDependencyContainer("Data").Add <IExecutive, CEO>("CEO") .Add <IExecutive, CTO>("CTO"); //Act var employee = container.ServiceProvider.GetService <IEmployee>(); //Assert Assert.IsInstanceOf <CEO>(employee.CEO); Assert.IsInstanceOf <CTO>(employee.CTO); }
public void RegisterTest() { var container = IocServicelet.Configure(config => { config.AddServices((opt) => { /*if namespaces are not specfied, it finds for services in entire assembly irrespective of namespaces.*/ opt.Namespaces = new[] { "BusinessService" }; opt.Assemblies = new[] { "BusinessServiceLibrary" }; opt.AddDependencies((repository) => { repository.Name = "Repository"; //optional, but it can be used to access the Factory object. repository.Namespaces = new[] { "RepositoryService" };; repository.Assemblies = new[] { "RepositoryServiceLibrary" }; repository.AddDependencies(data => { data.Name = "Data"; data.Namespaces = new[] { "DataService" }; data.Assemblies = new[] { "DataServiceLibrary" }; }); }); opt.StrictMode = true; }); //.RegisterServiceProvider(new ProxyServiceProvider()); config.Decorators.Add(new TestDecoratorAttribute()); }); //configRef.GetRootContainer().Add //configRef.GetDependencyService(). //Hold the pointer of serviceConfig in a static field to run further tests of dependency injection. Helper.TestsHelper.FactoryServicePointer = container; }
public static void Register() { /* IocServiceStack Documentation: https://rjinaga.github.io/IocServiceStack/ * nuget: https://www.nuget.org/packages/IocServiceStack/ * source code: https://github.com/rjinaga/IocServiceStack */ var container = IocServicelet.Configure(config => { config.AddServices((business) => { business.Assemblies = new[] { "Navtech.Oms.Business" }; business.AddDependencies((data) => { data.Assemblies = new[] { "Navtech.Oms.Communication", "Navtech.Oms.DataValidators", "Navtech.Oms.Data" }; }); business.StrictMode = true; }); }); }