Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #5
0
        public void RegisterServices()
        {
            var configRef = IocServicelet.Configure(config => { });

            configRef.GetServiceFactory().Add <ICustomer, CustomerService>()
            .Add <ICustomer, PlatinumCustomerService>("Platinum");
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
 private void RegisterServices()
 {
     var configRef = IocServicelet.Configure(config =>
     {
         config.UseRemoteServices("http://localhost:65039/serviceapi");
     });
 }
Пример #9
0
 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);
        }
Пример #12
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
        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);
        }
Пример #19
0
        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;
        }
Пример #21
0
        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;
                });
            });
        }