コード例 #1
0
        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);
            }
        }