public async Task DeleteAsyncShouldWorkCorrectlyUsingMoq() { var repository = new Mock <IDeletableEntityRepository <Address> >(); var addressesList = new List <Address> { new Address { Id = "TestId1", CreatedOn = DateTime.UtcNow, Street = "Test Street 1" }, new Address { Id = "TestId2", CreatedOn = DateTime.UtcNow, Street = "Test Street 2" }, }; repository.Setup(r => r.AllAsNoTracking()).Returns(addressesList.AsQueryable()); repository.Setup(r => r.Delete(It.IsAny <Address>())).Callback((Address item) => addressesList.Remove(item)); repository.Setup(r => r.SaveChangesAsync()).Verifiable(); var service = new AddressesService(repository.Object, null); Assert.True(await service.DeleteAsync("TestId1")); Assert.Single(addressesList); repository.Verify(x => x.AllAsNoTracking(), Times.Once); repository.Verify(x => x.Delete(It.IsAny <Address>()), Times.Once); repository.Verify(x => x.SaveChangesAsync()); }
public async Task DeleteAsyncShouldReturnFalseWhenIdIsInvalidUsingMoq() { var repository = new Mock <IDeletableEntityRepository <Address> >(); var addressesList = new List <Address> { new Address { Id = "TestId1", CreatedOn = DateTime.UtcNow, Street = "Test Street 1", }, }; repository.Setup(r => r.AllAsNoTracking()).Returns(addressesList.AsQueryable()); var service = new AddressesService(repository.Object, null); Assert.False(await service.DeleteAsync("TestId")); repository.Verify(x => x.AllAsNoTracking(), Times.Once); }
public async Task DeleteWorksCorrectly() { var options = new DbContextOptionsBuilder<ApplicationDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; var dbContext = new ApplicationDbContext(options); var repository = new EfDeletableEntityRepository<Address>(dbContext); var address = new Address() { Id = 1, }; dbContext.Add(address); await dbContext.SaveChangesAsync(); var service = new AddressesService(repository); await service.DeleteAsync(1); var addressesInDbCount = repository.All().ToList().Count(); Assert.Equal(0, addressesInDbCount); }