public void CreateShouldLogCatchedExceptionAsError() { using (MockDomain domain = new MockDomain()) { MockAssemblyRepository repository = new MockAssemblyRepository(); QualifiedName fakeName = new QualifiedName( typeof(string).FullName.Replace("mscorlib", "NonExistingAssemblyName"), typeof(string).Assembly.FullName.Replace("mscorlib", "NonExistingAssemblyName")); IPluginCreator tested = PluginCreator.GetCreator(domain); MockLog mocklog = new MockLog((ILogWriter)tested); PluginDescriptor descriptor = MockPluginDescriptor.For(fakeName); Exception ex = DoAssert.Throws<PluginException>(() => tested.Create(descriptor, repository, null)); Assert.IsTrue(mocklog.Any(x => x.Level == MockLog.Level.Error && x.Message.Contains(ex.Message))); } }
public void CreateShouldResolveMissingAssemblies() { using (MockDomain domain = new MockDomain()) { MockAssemblyRepository repository = new MockAssemblyRepository(); IPluginCreator tested = PluginCreator.GetCreator(domain); PluginDescriptor descriptor = MockPluginDescriptor.For<MockPlugin1>(); object instance = tested.Create(descriptor, repository, null); Assert.IsNotNull(instance); Assert.IsTrue(repository.Fetched.Keys.Contains(typeof(MockPlugin1).Assembly.FullName)); } }
public void ShouldLogInfoMessageWhenPluginIsCreated() { using (MockDomain domain = new MockDomain()) { MockAssemblyRepository repository = new MockAssemblyRepository(); var creator = PluginCreator.GetCreator(domain); MockLog mocklog = new MockLog(creator as ILogWriter); var descriptor = MockPluginDescriptor.For<MockPlugin1>(); creator.Create(descriptor, repository, null); Assert.IsTrue(mocklog.Any(x => x.Level == MockLog.Level.Info && x.Message.Contains(typeof(MockPlugin1).FullName))); } }
public void ShouldLogInfoEventWithDomainNameOnNewPluginCreator() { using (MockDomain domain = new MockDomain()) { MockAssemblyRepository repository = new MockAssemblyRepository(); MockLog mocklog = new MockLog(typeof(PluginCreator)); var mockLogFactory = new Mock<ILoggerFactory>(); mockLogFactory.Setup(x => x.GetLog(typeof(PluginCreator).FullName)).Returns(mocklog); PluginCreator.GetCreator(domain, mockLogFactory.Object); Assert.IsTrue(mocklog.Any(x => x.Level == MockLog.Level.Info && x.Message.Contains(domain.Domain.FriendlyName))); } }
public void GetCreatorShouldReturnSameInstanceForSameDomain() { using (MockDomain otherDomain = new MockDomain()) { IPluginCreator first = PluginCreator.GetCreator(otherDomain); IPluginCreator tested = PluginCreator.GetCreator(otherDomain); Assert.AreSame(first, tested); } }
public void GetCreatorShouldReturnDifferentInstanceForDifferentDomain() { using (MockDomain domain1 = new MockDomain()) using (MockDomain domain2 = new MockDomain()) { IPluginCreator tested1 = PluginCreator.GetCreator(domain1); IPluginCreator tested2 = PluginCreator.GetCreator(domain2); Assert.AreNotSame(tested1, tested2); } }
public void GetCreatorCanReturnCreatorInsideAnotherAppDomain() { using (MockDomain otherDomain = new MockDomain()) { IPluginCreator tested = PluginCreator.GetCreator(otherDomain); Assert.IsNotNull(tested); } }
public void CreateShouldThrowOnUnresolvedAssembly() { using (MockDomain domain = new MockDomain()) { MockAssemblyRepository repository = new MockAssemblyRepository(); IPluginCreator tested = PluginCreator.GetCreator(domain); QualifiedName fakeName = new QualifiedName( typeof(string).FullName.Replace("mscorlib", "NonExistingAssemblyName"), typeof(string).Assembly.FullName.Replace("mscorlib", "NonExistingAssemblyName")); PluginDescriptor descriptor = MockPluginDescriptor.For(fakeName); PluginException ex = DoAssert.Throws<PluginException>(() => tested.Create(descriptor, repository, null)); Assert.IsNotNull(ex.InnerException); Assert.IsInstanceOfType(ex.InnerException, typeof(FileNotFoundException)); } }