public void DiscoverChangeHandlerInvocations_InterfaceType_CreatesDescriptor() { var serviceProvider = new ServiceCollection() .AddScoped <IBeforeSaveTrigger <IComparable>, TriggerStub <IComparable> >() .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(serviceProvider), new TriggerTypeRegistryService()); var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Single(result); }
public void DiscoverTriggers_BaseType_CreatesDescriptor() { var serviceProvider = new ServiceCollection() .AddScoped <IBeforeSaveTrigger <object>, TriggerStub <object> >() .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(serviceProvider), new TriggerTypeRegistryService()); var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Single(result); }
public void DiscoverChangeHandlerInvocations_SortTriggersByBaseTypeThenDerivedType() { var objectTrigger = new TriggerStub <object>(); var concreteTrigger = new TriggerStub <string>(); var serviceProvider = new ServiceCollection() .AddSingleton <IBeforeSaveTrigger <string> >(concreteTrigger) .AddSingleton <IBeforeSaveTrigger <object> >(objectTrigger) .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(serviceProvider), new TriggerTypeRegistryService()); var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Equal(2, result.Count()); Assert.Equal(objectTrigger, result.First().Trigger); Assert.Equal(concreteTrigger, result.Last().Trigger); }
public void DiscoverChangeHandlerInvocations_SortTriggersByInterfaceThenType() { var interfaceTrigger = new TriggerStub <IComparable>(); var typeTrigger = new TriggerStub <string>(); var serviceProvider = new ServiceCollection() .AddSingleton <IBeforeSaveTrigger <string> >(typeTrigger) .AddSingleton <IBeforeSaveTrigger <IComparable> >(interfaceTrigger) .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(serviceProvider), new TriggerTypeRegistryService()); var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Equal(2, result.Count()); Assert.Equal(interfaceTrigger, result.First().Trigger); Assert.Equal(typeTrigger, result.Last().Trigger); }
public void SetServiceProvider_OverridesDefaultServiceProvider() { var defaultServiceProviderTrigger = new TriggerStub <object>(); var externalServiceProviderTrigger = new TriggerStub <object>(); var defaultServiceProvider = new ServiceCollection() .BuildServiceProvider(); var externalServiceProvider = new ServiceCollection() .AddSingleton <IBeforeSaveTrigger <object> >(externalServiceProviderTrigger) .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(defaultServiceProvider), new TriggerTypeRegistryService()); subject.ServiceProvider = externalServiceProvider; var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Single(result); }
public void DiscoverChangeHandlerInvocations_SortByPriorities() { var earlyTrigger = new TriggerStub <object> { Priority = CommonTriggerPriority.Early }; var lateTrigger = new TriggerStub <object> { Priority = CommonTriggerPriority.Late }; var serviceProvider = new ServiceCollection() .AddSingleton <IBeforeSaveTrigger <object> >(lateTrigger) .AddSingleton <IBeforeSaveTrigger <object> >(earlyTrigger) .BuildServiceProvider(); var subject = new TriggerDiscoveryService(new TriggerServiceProviderAccessor(serviceProvider), new TriggerTypeRegistryService()); var result = subject.DiscoverTriggers(typeof(IBeforeSaveTrigger <>), typeof(string), type => new BeforeSaveTriggerDescriptor(type)); Assert.Equal(2, result.Count()); Assert.Equal(earlyTrigger, result.First().Trigger); Assert.Equal(lateTrigger, result.Last().Trigger); }