public void SaveChanges_doesnt_call_DataStore_when_nothing_is_dirty() { var store = new Mock <DataStore>(); var sourceMock = new Mock <DataStoreSource>(); sourceMock.Setup(m => m.IsAvailable(It.IsAny <DbContextConfiguration>())).Returns(true); sourceMock.Setup(m => m.IsConfigured(It.IsAny <DbContextConfiguration>())).Returns(true); sourceMock.Setup(m => m.GetStore(It.IsAny <DbContextConfiguration>())).Returns(store.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); var configuration = new DbContextOptions().BuildConfiguration(); using (var context = new EarlyLearningCenter(serviceProvider, configuration)) { context.ChangeTracker.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.ChangeTracker.Entry(new Category { Id = 2 }).State = EntityState.Unchanged; Assert.Equal(2, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } store.Verify( s => s.SaveChangesAsync(It.IsAny <IReadOnlyList <StateEntry> >(), It.IsAny <CancellationToken>()), Times.Never); }
public void SaveChanges_only_passes_dirty_entries_to_DatStore() { var passedEntries = new List <StateEntry>(); var store = new Mock <DataStore>(); store.Setup(s => s.SaveChangesAsync(It.IsAny <IReadOnlyList <StateEntry> >(), It.IsAny <CancellationToken>())) .Callback <IEnumerable <StateEntry>, CancellationToken>((e, c) => passedEntries.AddRange(e)) .Returns(Task.FromResult(3)); var servicesMock = new Mock <DataStoreServices>(); servicesMock.Setup(m => m.Store).Returns(store.Object); servicesMock.Setup(m => m.ValueGeneratorCache).Returns(Mock.Of <ValueGeneratorCache>); servicesMock.Setup(m => m.ModelBuilderFactory).Returns(new ModelBuilderFactory()); var sourceMock = new Mock <DataStoreSource>(); sourceMock.Setup(m => m.IsAvailable).Returns(true); sourceMock.Setup(m => m.IsConfigured).Returns(true); sourceMock.Setup(m => m.StoreServices).Returns(servicesMock.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptions(); using (var context = new EarlyLearningCenter(serviceProvider, options)) { context.ChangeTracker.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.ChangeTracker.Entry(new Category { Id = 2 }).State = EntityState.Modified; context.ChangeTracker.Entry(new Category { Id = 3 }).State = EntityState.Added; context.ChangeTracker.Entry(new Category { Id = 4 }).State = EntityState.Deleted; Assert.Equal(4, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } Assert.Equal(3, passedEntries.Count); store.Verify( s => s.SaveChangesAsync(It.IsAny <IReadOnlyList <StateEntry> >(), It.IsAny <CancellationToken>()), Times.Once); }
public void SaveChanges_only_passes_dirty_entries_to_Database() { var passedEntries = new List<IUpdateEntry>(); var database = new Mock<IDatabase>(); database.Setup(s => s.SaveChanges(It.IsAny<IReadOnlyList<IUpdateEntry>>())) .Callback<IEnumerable<IUpdateEntry>>(passedEntries.AddRange) .Returns(3); var valueGenMock = new Mock<IValueGeneratorSelector>(); valueGenMock.Setup(m => m.Select(It.IsAny<IProperty>(), It.IsAny<IEntityType>())).Returns(Mock.Of<ValueGenerator>()); var servicesMock = new Mock<IDatabaseProviderServices>(); servicesMock.Setup(m => m.Database).Returns(database.Object); servicesMock.Setup(m => m.ValueGeneratorSelector).Returns(valueGenMock.Object); servicesMock.Setup(m => m.ModelSource).Returns(new Mock<ModelSource>(new DbSetFinder(), new CoreConventionSetBuilder()) { CallBase = true }.Object); servicesMock .Setup(m => m.ModelValidator) .Returns(new LoggingModelValidator(new Logger<LoggingModelValidator>(new LoggerFactory()))); var sourceMock = new Mock<IDatabaseProvider>(); sourceMock.Setup(m => m.IsConfigured(It.IsAny<IDbContextOptions>())).Returns(true); sourceMock.Setup(m => m.GetProviderServices(It.IsAny<IServiceProvider>())).Returns(servicesMock.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); using (var context = new EarlyLearningCenter(serviceProvider, new DbContextOptionsBuilder().Options)) { context.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.Entry(new Category { Id = 2 }).State = EntityState.Modified; context.Entry(new Category { Id = 3 }).State = EntityState.Added; context.Entry(new Category { Id = 4 }).State = EntityState.Deleted; Assert.Equal(4, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } Assert.Equal(3, passedEntries.Count); database.Verify( s => s.SaveChanges(It.IsAny<IReadOnlyList<InternalEntityEntry>>()), Times.Once); }
public void SaveChanges_doesnt_call_Database_when_nothing_is_dirty() { var database = new Mock<IDatabase>(); var servicesMock = new Mock<IDatabaseProviderServices>(); servicesMock.Setup(m => m.Database).Returns(database.Object); servicesMock.Setup(m => m.ModelSource).Returns(new Mock<ModelSource>(new DbSetFinder(), new CoreConventionSetBuilder()) { CallBase = true }.Object); servicesMock .Setup(m => m.ModelValidator) .Returns(new LoggingModelValidator(new Logger<LoggingModelValidator>(new LoggerFactory()))); var sourceMock = new Mock<IDatabaseProvider>(); sourceMock.Setup(m => m.IsConfigured(It.IsAny<IDbContextOptions>())).Returns(true); sourceMock.Setup(m => m.GetProviderServices(It.IsAny<IServiceProvider>())).Returns(servicesMock.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); using (var context = new EarlyLearningCenter(serviceProvider, new DbContextOptionsBuilder().Options)) { context.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.Entry(new Category { Id = 2 }).State = EntityState.Unchanged; Assert.Equal(2, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } database.Verify( s => s.SaveChangesAsync(It.IsAny<IReadOnlyList<InternalEntityEntry>>(), It.IsAny<CancellationToken>()), Times.Never); }
public void SaveChanges_only_passes_dirty_entries_to_DatStore() { var passedEntries = new List<StateEntry>(); var store = new Mock<DataStore>(); store.Setup(s => s.SaveChangesAsync(It.IsAny<IReadOnlyList<StateEntry>>(), It.IsAny<CancellationToken>())) .Callback<IEnumerable<StateEntry>, CancellationToken>((e, c) => passedEntries.AddRange(e)) .Returns(Task.FromResult(3)); var servicesMock = new Mock<DataStoreServices>(); servicesMock.Setup(m => m.Store).Returns(store.Object); servicesMock.Setup(m => m.ValueGeneratorCache).Returns(Mock.Of<ValueGeneratorCache>); servicesMock.Setup(m => m.ModelBuilderFactory).Returns(new ModelBuilderFactory()); var sourceMock = new Mock<DataStoreSource>(); sourceMock.Setup(m => m.IsAvailable).Returns(true); sourceMock.Setup(m => m.IsConfigured).Returns(true); sourceMock.Setup(m => m.StoreServices).Returns(servicesMock.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptions(); using (var context = new EarlyLearningCenter(serviceProvider, options)) { context.ChangeTracker.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.ChangeTracker.Entry(new Category { Id = 2 }).State = EntityState.Modified; context.ChangeTracker.Entry(new Category { Id = 3 }).State = EntityState.Added; context.ChangeTracker.Entry(new Category { Id = 4 }).State = EntityState.Deleted; Assert.Equal(4, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } Assert.Equal(3, passedEntries.Count); store.Verify( s => s.SaveChangesAsync(It.IsAny<IReadOnlyList<StateEntry>>(), It.IsAny<CancellationToken>()), Times.Once); }
public void SaveChanges_doesnt_call_DataStore_when_nothing_is_dirty() { var store = new Mock<DataStore>(); var servicesMock = new Mock<DataStoreServices>(); servicesMock.Setup(m => m.Store).Returns(store.Object); servicesMock.Setup(m => m.ModelBuilderFactory).Returns(new ModelBuilderFactory()); var sourceMock = new Mock<DataStoreSource>(); sourceMock.Setup(m => m.IsAvailable).Returns(true); sourceMock.Setup(m => m.IsConfigured).Returns(true); sourceMock.Setup(m => m.StoreServices).Returns(servicesMock.Object); var services = new ServiceCollection(); services.AddEntityFramework(); services.AddInstance(sourceMock.Object); var serviceProvider = services.BuildServiceProvider(); var options = new DbContextOptions(); using (var context = new EarlyLearningCenter(serviceProvider, options)) { context.ChangeTracker.Entry(new Category { Id = 1 }).State = EntityState.Unchanged; context.ChangeTracker.Entry(new Category { Id = 2 }).State = EntityState.Unchanged; Assert.Equal(2, context.ChangeTracker.Entries().Count()); context.SaveChanges(); } store.Verify( s => s.SaveChangesAsync(It.IsAny<IReadOnlyList<StateEntry>>(), It.IsAny<CancellationToken>()), Times.Never); }