public async Task WhenDeleteCustomerAsync_ThenCustomerMarkedAsDeleted() { // Arrange var customer = new Customer() { ID = Guid.NewGuid(), CurrentBalance = 200, Email = "*****@*****.**", Surname = "Test", GivenNames = "Person" }; using (var ctx = _dbContextCreator.CreateDbContext()) { ctx.Add(customer); await ctx.SaveChangesAsync(); } // Act await _repo.DeleteCustomerAsync(customer.ID); // Assert using (var ctx = _dbContextCreator.CreateDbContext()) { // Deleted item shouldn't show when queried normally Assert.Null(await ctx.Customer.FirstOrDefaultAsync()); var customerInDb = (await ctx.Customer.IgnoreQueryFilters().FirstOrDefaultAsync()); customerInDb.Should().BeEquivalentTo(customer, options => options.Excluding(c => c.IsDeleted)); Assert.True(customerInDb.IsDeleted); } }