public void Interface_Types_Are_Ignored() { var typeSource = new MockTypeSource(typeof(IInterfaceHandler1)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource); Assert.Empty(collection); }
public void Interfaces_That_Does_Not_Implement_IRequestHandler_Are_Ignored() { var typeSource = new MockTypeSource( typeof(NotRequestHandler)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource); Assert.Empty(collection); }
public void Open_Generic_Types_Are_Ignored() { var typeSource = new MockTypeSource( typeof(GenericHandler1 <>), typeof(GenericHandler2 <,>)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource); Assert.Empty(collection); }
public void RetrieveRequestHandler_Correct_Interfaces_Are_Generated() { var typeSource = new MockTypeSource( typeof(TestRetrieveHandler1)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource); Assert.Collection(collection.OrderBy(x => x.ServiceType?.Name), x => Assert.Equal(typeof(IRetrieveHandler <TestRow>), x.ServiceType), x => Assert.Equal(typeof(IRetrieveHandler <TestRow, RetrieveRequest, RetrieveResponse <TestRow> >), x.ServiceType), x => Assert.Equal(typeof(TestRetrieveHandler1), x.ServiceType)); }
public void Interface_Type_CanBeFiltered_Via_Predicate() { var typeSource = new MockTypeSource(typeof(CustomHandler1)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource, (svc, impl) => !svc.IsInterface); var descriptor = Assert.Single(collection); Assert.Equal(typeof(CustomHandler1), descriptor.ServiceType); Assert.Equal(typeof(CustomHandler1), descriptor.ImplementationType); Assert.Equal(ServiceLifetime.Transient, descriptor.Lifetime); }
public void Throws_When_Multiple_Types_With_DefaultHandler_Implements_Same_Interface() { var typeSource = new MockTypeSource( typeof(CustomHandler1DefaultA), typeof(CustomHandler1DefaultB)); var collection = new ServiceCollection(); var exception = Assert.Throws <InvalidProgramException>(() => collection.AddCustomRequestHandlers(typeSource)); Assert.Contains("CustomHandler1DefaultA", exception.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("CustomHandler1DefaultB", exception.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("use [DefaultHandler] on only one of them!", exception.Message, StringComparison.OrdinalIgnoreCase); }
public void Uses_Passed_TypeSource() { var typeSource = new MockTypeSource(typeof(CustomHandler1)); var collection = new ServiceCollection(); collection.AddCustomRequestHandlers(typeSource); Assert.Collection(collection, x1 => { Assert.Equal(typeof(CustomHandler1), x1.ServiceType); Assert.Equal(typeof(CustomHandler1), x1.ImplementationType); Assert.Equal(ServiceLifetime.Transient, x1.Lifetime); }, x2 => { Assert.Equal(typeof(ICustomHandler1), x2.ServiceType); Assert.Equal(typeof(CustomHandler1), x2.ImplementationType); Assert.Equal(ServiceLifetime.Transient, x2.Lifetime); }); }