public void UpdateEntity_CallsHooks() { // Arrange var hook = new UntypedDbContextHook(); var hooks = new IDbContextHook[] { hook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; var context = new TestExtendedDbContext(hooks, options); // Act var product = new Product { Id = 1 }; context.Update(product); // Assert Assert.Equal(true, hook.UpdatingEntryCalled); Assert.Equal(true, hook.UpdatedEntryCalled); }
public void Supports_TypedHooks() { // Arrange var typedHook = new TypedDbContextHook(); var otherTypedHook = new OtherTypedDbContextHook(); var hooks = new IDbContextHook[] { typedHook, otherTypedHook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; var context = new TestExtendedDbContext(hooks, options); // Act // MA - Services are lazily initiated so we need to perform an operation to set them. context.SaveChanges(); // Assert Assert.Equal(true, typedHook.OnConfiguringCalled); // MA - THis should be false, because otherTypedHook is a typed hook for a different DbContext type. Assert.Equal(false, otherTypedHook.OnConfiguringCalled); }
public async Task SavingChangesAsync_CallsHooks() { // Arrange var hook = new UntypedDbContextHook(); var hooks = new IDbContextHook[] { hook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; var context = new TestExtendedDbContext(hooks, options); // Act var product = new Product { }; context.Add(product); await context.SaveChangesAsync(); // Assert Assert.Equal(true, hook.SavingChangesAsyncCalled); Assert.Equal(true, hook.SavedChangesAsyncCalled); }
public void OnModelCreating_CallsHooks() { // Arrange var hook = new UntypedDbContextHook(); var hooks = new IDbContextHook[] { hook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; var context = new TestExtendedDbContext(hooks, options); // Act var product = new Product { }; // MA - Services are lazily initiated so we need to perform an operation to set them. context.Add(product); // Assert Assert.Equal(true, hook.OnModelCreatingCalled); }
public void Constructor_ValidatesParameters() { // Arrange var hooks = new IDbContextHook[0]; // Act // Assert Assert.Throws <ArgumentNullException>(() => new ExtendedDbContext(null /* hooks */, null /* options */)); Assert.Throws <ArgumentNullException>(() => new ExtendedDbContext(hooks, null /* options */)); }
public void DbContextType_AppliedToHooks() { // Arrange var untypedHook = new UntypedDbContextHook(); var hooks = new IDbContextHook[] { untypedHook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; // Act var context = new TestExtendedDbContext(hooks, options); // Assert Assert.Equal(typeof(TestExtendedDbContext), untypedHook.DbContextType); }
public void Supports_UntypedHooks() { // Arrange var untypedHook = new UntypedDbContextHook(); var hooks = new IDbContextHook[] { untypedHook }; var services = new ServiceCollection().AddEntityFrameworkInMemoryDatabase(); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptionsBuilder <ExtendedDbContext>() .UseInMemoryDatabase() .UseInternalServiceProvider(serviceProvider) .Options; var context = new TestExtendedDbContext(hooks, options); // Act // MA - Services are lazily initiated so we need to perform an operation to set them. context.SaveChanges(); // Assert Assert.Equal(true, untypedHook.OnConfiguringCalled); }