public async Task UpdateFieldsAsync_WithMultipleChangedEntities_ShouldOnlyUpdateSpecifiedEntity() { // Arrange var testEntity1 = new TestEntity { Id = Guid.NewGuid(), Name = "Count Dooku", Number = 1 }; var testEntity2 = new TestEntity { Id = Guid.NewGuid(), Name = "Kit Fisto", Number = 2 }; DbContextOptions <TestDbContext> options = new DbContextOptionsBuilder <TestDbContext>() .UseInMemoryDatabase(databaseName: "InMemory_TestDb") .Options; using (var dbContext = new TestDbContext(options)) { dbContext.Add(testEntity1); dbContext.Add(testEntity2); await dbContext.SaveChangesAsync(); } // Act using (var dbContext = new TestDbContext(options)) { var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); testEntity1 = await repository.GetByIdAsync(testEntity1.Id); testEntity1.Name = "Darth Vader"; testEntity1.Number = 45; testEntity2.Name = "Sheev Palpatine"; await repository.UpdateFieldsAsync(testEntity1, te => te.Name); } // Assert using (var dbContext = new TestDbContext(options)) { var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); TestEntity updatedTestEntity1 = await repository.GetByIdAsync(testEntity1.Id); TestEntity updatedTestEntity2 = await repository.GetByIdAsync(testEntity2.Id); updatedTestEntity1.Name.Should().Be("Darth Vader"); updatedTestEntity1.Number.Should().Be(1); updatedTestEntity2.Name.Should().Be("Kit Fisto"); } }
public async Task UpdateAsync_ExistingEntity_ShouldUpdateEntity() { // Arrange var testEntity = new TestEntity { Id = Guid.NewGuid(), Name = "Luke Skywalker", Number = 1 }; DbContextOptions <TestDbContext> options = new DbContextOptionsBuilder <TestDbContext>() .UseInMemoryDatabase(databaseName: "InMemory_TestDb") .Options; var dbContext = new TestDbContext(options); var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); dbContext.Add(testEntity); await dbContext.SaveChangesAsync(); testEntity.Name = "Han Solo"; testEntity.Number = 2; // Act await repository.UpdateAsync(testEntity); TestEntity verifyEntity = await repository.GetByIdAsync(testEntity.Id); // Assert verifyEntity.Name.Should().Be("Han Solo"); verifyEntity.Number.Should().Be(2); }
public async Task UpdateFieldsAsync_WithProperties_ShouldOnlyUpdateSpecifiedEntityProperties() { // Arrange var testEntity = new TestEntity { Id = Guid.NewGuid(), Name = "Anakin Skywalker", Number = 1 }; DbContextOptions <TestDbContext> options = new DbContextOptionsBuilder <TestDbContext>() .UseInMemoryDatabase(databaseName: "InMemory_TestDb") .Options; using (var dbContext = new TestDbContext(options)) { dbContext.Add(testEntity); await dbContext.SaveChangesAsync(); } testEntity.Name = "Obi-Wan Kenobi"; testEntity.Number = 2; // Act using (var dbContext = new TestDbContext(options)) { var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); await repository.UpdateFieldsAsync(testEntity, te => te.Name); } // Assert using (var dbContext = new TestDbContext(options)) { var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); TestEntity updatedTestEntity = await repository.GetByIdAsync(testEntity.Id); updatedTestEntity.Name.Should().Be("Obi-Wan Kenobi"); updatedTestEntity.Number.Should().Be(1); } }
public async Task UpdateFieldsAsync_WithProperties_ShouldUpdateEntityProperties() { // Arrange var testEntity = new TestEntity { Id = Guid.NewGuid(), Name = "Chewbacca", Number = 1 }; DbContextOptions <TestDbContext> options = new DbContextOptionsBuilder <TestDbContext>() .UseInMemoryDatabase(databaseName: "InMemory_TestDb") .Options; using (var dbContext = new TestDbContext(options)) { dbContext.Add(testEntity); await dbContext.SaveChangesAsync(); } TestEntity updatedTestEntity = null; testEntity.Name = "R2-D2"; testEntity.Number = 2; // Act using (var dbContext = new TestDbContext(options)) { var repository = new ReadWriteRepository <TestEntity, Guid>(() => dbContext); await repository.UpdateFieldsAsync(testEntity, te => te.Name, te => te.Number); // Assert updatedTestEntity = await repository.GetByIdAsync(testEntity.Id); } // Assert updatedTestEntity.Name.Should().Be("R2-D2"); updatedTestEntity.Number.Should().Be(2); }