public void GetDefinitionStore_ReturnsCustomStoreCorrespondingToTheSpecifiedType() { // Arrange var services = new ServiceCollection(); services.AddSingleton(Mock.Of <IBpmNetDefinitionStore <CustomDefinition> >()); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(provider); // Act and assert Assert.NotNull(resolver.GetDefinitionStore <CustomDefinition>()); }
public void GetDefinitionStore_ReturnsCustomStoreCorrespondingToTheSpecifiedTypeWhenAvailable() { // Arrange var services = new ServiceCollection(); services.AddSingleton(Mock.Of <IBpmNetDefinitionStore <BpmNetDefinition> >()); var options = Mock.Of <IOptionsMonitor <BpmNetEntityFrameworkCoreOptions> >(); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(options, provider); // Act and assert Assert.NotNull(resolver.GetDefinitionStore <BpmNetDefinition>()); }
public void GetDefinitionStore_ThrowsAnExceptionWhenStoreCannotBeFound() { // Arrange var services = new ServiceCollection(); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(provider); // Act and assert var exception = Assert.Throws <InvalidOperationException>(() => resolver.GetDefinitionStore <CustomDefinition>()); Assert.Equal(new StringBuilder() .AppendLine("No definition store has been registered in the dependency injection container.") .Append("To register the Entity Framework Core stores, reference the 'BpmNet.EntityFrameworkCore' ") .AppendLine("package and call 'services.AddBpmNet().AddCore().UseEntityFrameworkCore()'.") .Append("To register a custom store, create an implementation of 'IBpmNetDefinitionStore' and ") .Append("use 'services.AddBpmNet().AddCore().ReplaceDefinitionStore()' to add it to the DI container.") .ToString(), exception.Message); }
public void GetDefinitionStore_ThrowsAnExceptionForInvalidEntityType() { // Arrange var services = new ServiceCollection(); var options = Mock.Of <IOptionsMonitor <BpmNetEntityFrameworkCoreOptions> >(); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(options, provider); // Act and assert var exception = Assert.Throws <InvalidOperationException>(() => resolver.GetDefinitionStore <CustomDefinition>()); Assert.Equal(new StringBuilder() .AppendLine("The specified definition type is not compatible with the Entity Framework Core stores. ") .Append("When enabling the Entity Framework Core stores, make sure your custom entity is inherit From ") .Append("'BpmNetDefinition' in your entity model (from the 'BpmNet.Core' package) ") .ToString(), exception.Message); }
public void GetDefinitionStore_ReturnsDefaultStoreCorrespondingToTheSpecifiedTypeWhenAvailable() { // Arrange var services = new ServiceCollection(); services.AddSingleton(Mock.Of <IBpmNetDefinitionStore <BpmNetDefinition> >()); services.AddSingleton(CreateStore <BpmNetDefinition>()); var options = Mock.Of <IOptionsMonitor <BpmNetEntityFrameworkCoreOptions> >( mock => mock.CurrentValue == new BpmNetEntityFrameworkCoreOptions { DbContextType = typeof(DbContext) }); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(options, provider); // Act and assert Assert.NotNull(resolver.GetDefinitionStore <BpmNetDefinition>()); }
public void GetDefinitionStore_ThrowsAnExceptionForNullDbContext() { // Arrange var services = new ServiceCollection(); var options = Mock.Of <IOptionsMonitor <BpmNetEntityFrameworkCoreOptions> >( mock => mock.CurrentValue == new BpmNetEntityFrameworkCoreOptions { DbContextType = null }); var provider = services.BuildServiceProvider(); var resolver = new BpmNetStoreResolver(options, provider); // Act and assert var exception = Assert.Throws <InvalidOperationException>(() => resolver.GetDefinitionStore <BpmNetDefinition>()); //Assert.Equal(new StringBuilder() // .AppendLine("No Entity Framework Core context was specified in the BpmNet options.") // .Append("To configure the BpmNet Entity Framework Core stores to use a specific 'DbContext', ") // .Append("use 'options.UseEntityFrameworkCore().UseDbContext<TContext>()'.") // .ToString(), exception.Message); }