Exemplo n.º 1
0
        public void Scan_SampleAssemblyWithCompositionRoot_CallsComposeMethodOnce()
        {
	        var containerMock = new ContainerMock(new MockContext<IServiceContainer>());
            var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock));
            SampleCompositionRoot.CallCount = 0;
            assemblyScanner.Scan(typeof(SampleCompositionRoot).Assembly, containerMock);
            Assert.AreEqual(1, SampleCompositionRoot.CallCount);
        }
 public void Execute_CompositionRootType_IsCreatedAndExecuted()
 {            
     CompositionRootMock compositionRootMock = new CompositionRootMock();
     var serviceContainerMock = new ContainerMock();
     var executor = new CompositionRootExecutor(serviceContainerMock, (t) => compositionRootMock);
     executor.Execute(typeof(CompositionRootMock));
     compositionRootMock.Assert(c => c.Compose(The<IServiceContainer>.IsAnyValue), Invoked.Once);            
 }
Exemplo n.º 3
0
 public void ScanUsingPredicate_SampleAssemblyWithCompositionRoot_DoesNotCallCompositionRoot()
 {
     var containerMock = new ContainerMock(new MockContext<IServiceContainer>());
     var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock));
     SampleCompositionRoot.CallCount = 0;
     assemblyScanner.Scan(typeof(SampleCompositionRoot).Assembly, containerMock,() => null, (s, t) => true);            
     Assert.AreEqual(0, SampleCompositionRoot.CallCount);
 }
Exemplo n.º 4
0
 private MockContext<IServiceContainer> GetContainerMock(Func<ILifetime> lifetimeFactory, Func<Type, Type, bool> shouldRegister)
 {
     var mockContext = new MockContext<IServiceContainer>();
     var containerMock = new ContainerMock(mockContext);            
     var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock));
     assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, lifetimeFactory, shouldRegister);
     return mockContext;
 }
 public void Execute_CompositionRootType_IsCreatedAndExecutedOnlyOnce()
 {
     SampleCompositionRoot.CallCount = 0;
     var serviceContainerMock = new ContainerMock(new MockContext<IServiceContainer>());
     var executor = new CompositionRootExecutor(serviceContainerMock);
     executor.Execute(typeof(SampleCompositionRoot));
     executor.Execute(typeof(SampleCompositionRoot));
     Assert.AreEqual(1, SampleCompositionRoot.CallCount);
 }
        public void GetInstanceThrowsActivationExceptionWhenComponentNotFound()
        {
            var container = new ContainerMock();
            var adapter = new CommonServiceLocatorAdapter(container);
            container.AddExpectation("Resolve", () =>
                                                           {
                                                               throw new ServiceNotFoundException(typeof(IService));

                                                           });
            Assert.Throws<ActivationException>(() => adapter.GetInstance<IService>());
        }
Exemplo n.º 7
0
 private MockContext<IServiceContainer> GetContainerMock(Func<ILifetime> lifetimeFactory, Func<Type, Type, bool> shouldRegister)
 {            
     var containerMock = new ContainerMock();
     var compositionRootMock = new CompositionRootMock();     
     
     var compositionRootTypeExtractorMock = new TypeExtractorMock();
     compositionRootTypeExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(Type.EmptyTypes);
            
     var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), compositionRootTypeExtractorMock, new CompositionRootExecutor(containerMock,t => compositionRootMock));
     assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, lifetimeFactory, shouldRegister);
     return containerMock;
 }
        public void GetInstanceTranslatesToResolveOnContainer()
        {
            var container = new ContainerMock();
            var weakResolveWasCalled = false;
            container.AddExpectation("Resolve", () =>
                                                    {
                                                        weakResolveWasCalled = true;
                                                        return new ClassWithNoDependencies();
                                                    });

            var adapter = new CommonServiceLocatorAdapter(container);
            adapter.GetInstance<IService>();

            Assert.True(weakResolveWasCalled);
        }
Exemplo n.º 9
0
 public void BadModuleThrowsException()
 {
     var catalog = new ModuleCatalog();
     catalog.AddModule<BadModule>();
     var containerMock = ContainerMock.CreateMock();
     var initializer = new ModuleInitializer(containerMock.Object);
     var manager = new ModuleManager(initializer, catalog);
     manager.LoadModuleCompleted += OnModuleLoaded;
     void OnModuleLoaded(object sender, LoadModuleCompletedEventArgs args)
     {
         Assert.Equal(nameof(BadModule), args.ModuleInfo.ModuleName);
         Assert.NotNull(args.Error);
         Assert.Equal(nameof(BadModule.RegisterTypes), args.Error.Message);
         manager.LoadModuleCompleted -= OnModuleLoaded;
     }
     var ex = Record.Exception(() => manager.LoadModule(nameof(BadModule)));
 }
Exemplo n.º 10
0
        public void ScanUsingPredicate_SampleAssemblyWithCompositionRoot_DoesNotCallCompositionRoot()
        {
            var compositionRootMock = new CompositionRootMock();
            var containerMock = new ContainerMock();
            var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(),
                new CompositionRootTypeExtractor(new CompositionRootAttributeExtractor()),
                new CompositionRootExecutor(containerMock, t => compositionRootMock));

            assemblyScanner.Scan(typeof(AssemblyScannerTests).Assembly, containerMock, () => null, (s, t) => true);
            
            compositionRootMock.Assert(c => c.Compose(containerMock), Invoked.Never);
        }
Exemplo n.º 11
0
        public void Scan_SampleAssemblyWithCompositionRoot_CallsComposeMethodOnce()
        {
            var compositionRootMock = new CompositionRootMock();
            var containerMock = new ContainerMock();
            var compositionRootExtractorMock = new TypeExtractorMock();
            compositionRootExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(new []{typeof(CompositionRootMock)});
            var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(),
                compositionRootExtractorMock,
                new CompositionRootExecutor(containerMock, t => compositionRootMock));
            
            assemblyScanner.Scan(typeof(AssemblyScannerTests).Assembly, containerMock);

            compositionRootMock.Assert(c => c.Compose(containerMock), Invoked.Once);
        }
Exemplo n.º 12
0
        public void Register_Assembly_RegistersConcreteTypeWithBaseclass()
        {
            var mockContext = new MockContext<IServiceContainer>();
            var containerMock = new ContainerMock(mockContext);
            
            AssemblyScanner assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock));

            assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, () => null, (s,t) => true);

            mockContext.Assert(r => r.Register(typeof(Foo), typeof(ConcreteFooWithBaseClass), "ConcreteFooWithBaseClass", null));
        }
Exemplo n.º 13
0
        private MockContext<IServiceContainer> GetContainerMock(Type type)
        {
            var compositionRootExtractorMock = new TypeExtractorMock();
            compositionRootExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(Type.EmptyTypes);
            var concreteTypeExtractorMock = new TypeExtractorMock();
            concreteTypeExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(new Type[] { type });
            var scanner = new AssemblyScanner(concreteTypeExtractorMock, compositionRootExtractorMock, null,
                new GenericArgumentMapper());
            var containerMock = new ContainerMock();

            scanner.Scan(typeof(IFoo).Assembly, containerMock, () => null, (st, ip) => true);
            return containerMock;
        }