public void DllWithoutManifestLogsAnErrorOnLoading() { // Arrange var loggerMock = Substitute.For <MockLogger <TemporaryFileCopy> >(); var serviceCollectionMock = Substitute.For <IServiceCollection>(); using (var tempFile = new TemporaryFileCopy("SAF.Common.dll")) { var t = tempFile; // Act serviceCollectionMock.AddHost(settings => settings.SearchPath = $"./{t.TempFileName}", loggerMock); // Assert // ... added NO manifest (no valid dll loaded) serviceCollectionMock.DidNotReceive().Add(Arg.Is <ServiceDescriptor>(sd => sd.ServiceType.Name == "IServiceAssemblyManifest")); // ... added the service host (as self-implementation) and the service message dispatcher (as IServiceMessageDispatcher) serviceCollectionMock.Received(1).Add(Arg.Is <ServiceDescriptor>(sd => sd.ImplementationType.Name == "ServiceHost" && sd.ImplementationType.Name == "ServiceHost")); serviceCollectionMock.Received(1).Add(Arg.Is <ServiceDescriptor>(sd => sd.ServiceType.Name == "IServiceMessageDispatcher" && sd.ImplementationType.Name == "MessageDispatcher")); // ... and the error is logged loggerMock.AssertLogged(LogLevel.Error); } }
public void DllWithManifestThrowsNoErrorOnLoading() { // Arrange var loggerMock = Substitute.For <MockLogger>(); var servicesMock = Substitute.For <IServiceCollection>(); using (var tempFile = new TemporaryFileCopy("SAF.Hosting.TestServices.dll")) { var t = tempFile; // Act servicesMock.AddHost(settings => settings.SearchPath = $"./{t.TempFileName}", loggerMock); // Assert // ... added one manifest servicesMock.Received(1).Add(Arg.Is <ServiceDescriptor>(sd => sd.ServiceType.Name == "IServiceAssemblyManifest")); // ... added the service host (as self-implementation) and the service message dispatcher (as IServiceMessageDispatcher) servicesMock.Received(1).Add(Arg.Is <ServiceDescriptor>(sd => sd.ImplementationType.Name == "ServiceHost" && sd.ImplementationType.Name == "ServiceHost")); servicesMock.Received(1).Add(Arg.Is <ServiceDescriptor>(sd => sd.ServiceType.Name == "IServiceMessageDispatcher" && sd.ImplementationType.Name == "MessageDispatcher")); // ... and no error logged loggerMock.AssertNotLogged(LogLevel.Error); } }