public void AddFakeEntityWithTransaction() { var entities = new List <FakeEntity> { new FakeEntity { Name = Guid.NewGuid().ToString(), CreatedTime = DateTime.Now }, new FakeEntity { Name = Guid.NewGuid().ToString(), CreatedTime = DateTime.Now }, }; using (var transaction = _fakeDbContext.Database.BeginTransaction()) { try { _fakeDbContext.Set <FakeEntity>().AddRange(entities); _fakeDbContext.SaveChanges(); //throw new Exception(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); } } }
public void Should_Audit_When_EntityState_SoftDeleted() { var options = DatabaseOptions <FakeDbContext>(); var fakeEntities = new FakeEntities(); using (IDbContext context = new FakeDbContext(options)) { var dbSet = context.Set <FakeEntity>(); dbSet.AddRange(fakeEntities); context.SaveChanges(); } using (IDbContext context = new FakeDbContext(options)) { var dbSet = context.Set <FakeEntity>(); dbSet.RemoveRange(fakeEntities); context.Audit(); var auditEntries = context.GetCurrentEntries(); Assert.All(auditEntries, prop => Assert.Equal(Principal.Identity.Name, prop.CurrentValues[nameof(FakeEntity.ModifiedBy)])); Assert.All(auditEntries, prop => Assert.True((bool)prop.CurrentValues[nameof(FakeEntity.IsDeleted)])); Assert.All(auditEntries, prop => Assert.Equal((DateTime)prop.CurrentValues[nameof(FakeEntity.ModifiedTime)], (DateTime)prop.CurrentValues[nameof(FakeEntity.DeletedTime)], TimeSpan.FromMinutes(1))); } }
public void Should_Audit_When_EntityState_Modified() { var options = DatabaseOptions <FakeDbContext>(); var fakeEntities = new FakeEntities(); using (IDbContext context = new FakeDbContext(options)) { var dbSet = context.Set <FakeEntity>(); dbSet.AddRange(fakeEntities); context.SaveChanges(); } using (IDbContext context = new FakeDbContext(options)) { var dbSet = context.Set <FakeEntity>(); dbSet.AttachRange(fakeEntities); fakeEntities.ForEach(entity => entity.EntityName = "Modified"); context.Audit(); var auditEntries = context.GetCurrentEntries(); var modifyDateTime = (DateTime)auditEntries.First().CurrentValues[nameof(FakeEntity.ModifiedTime)]; Assert.All(auditEntries, prop => Assert.Equal("Modified", prop.CurrentValues[nameof(FakeEntity.EntityName)])); Assert.All(auditEntries, prop => Assert.Equal(Principal.Identity.Name, prop.CurrentValues[nameof(FakeEntity.ModifiedBy)])); Assert.All(auditEntries, prop => Assert.Equal(modifyDateTime, (DateTime)prop.CurrentValues[nameof(FakeEntity.ModifiedTime)], TimeSpan.FromMinutes(1))); } }
/// <summary> /// Ensures that there is fake aggregate roots with the specified count /// </summary> /// <param name="count">Count of fake aggregate roots</param> protected IReadOnlyCollection <FakeAggregateRoot> EnsureHasFakeAggregateRoots(int count) { for (int i = 0; i < count; i++) { var fakeAggregateRoot = new FakeAggregateRoot(GenerateRandomName()); _dbContext .Set <FakeAggregateRoot>() .Add(fakeAggregateRoot); } _dbContext.SaveChanges(); return(_dbContext .Set <FakeAggregateRoot>() .ToList()); }
public void Should_Set_Entity() { using (IDbContext context = new FakeDbContext(DatabaseOptions <FakeDbContext>())) { var dbSet = context.Set <FakeEntity>(); Assert.NotNull(dbSet); } }
public void Should_Audit_When_EntityState_Added() { var fakeEntities = new FakeEntities(); using (IDbContext context = new FakeDbContext(DatabaseOptions <FakeDbContext>())) { var dbSet = context.Set <FakeEntity>(); dbSet.AddRange(fakeEntities); context.Audit(); var auditEntries = context.GetCurrentEntries(); var entryDateTime = (DateTime)auditEntries.First().CurrentValues[nameof(FakeEntity.CreatedTime)]; Assert.All(auditEntries, prop => Assert.Equal(Principal.Identity.Name, prop.CurrentValues[nameof(FakeEntity.CreatedBy)])); Assert.All(auditEntries, prop => Assert.Equal(entryDateTime, (DateTime)prop.CurrentValues[nameof(FakeEntity.CreatedTime)], TimeSpan.FromMinutes(1))); Assert.All(auditEntries, prop => Assert.Null(prop.CurrentValues[nameof(FakeEntity.ModifiedBy)])); Assert.All(auditEntries, prop => Assert.Null(prop.CurrentValues[nameof(FakeEntity.ModifiedTime)])); } }
public void Delete_ExistingEntity_Deleted() { // Arrange const int id = 30; var dbContextOptionsBuilder = new DbContextOptionsBuilder <DbContext>().UseInMemoryDatabase(nameof(Delete_ExistingEntity_Deleted)); var fakeDbContext = new FakeDbContext(dbContextOptionsBuilder.Options, "dbo"); var entity = fakeDbContext.Add(new FakeEntity { Id = id }).Entity; fakeDbContext.SaveChanges(); var repository = new Repository <FakeEntity, int>(fakeDbContext); // Act repository.Delete(entity); fakeDbContext.SaveChanges(); // Assert Assert.False(fakeDbContext.Set <FakeEntity>().Any(x => x.Id == id)); }