Remove basket items when basket is deleted (#170)
* Proving out removing the basket items at the same time the basket is deleted * Fixing existing unit tests * Adding a unit test for the Deletebasket method * Rename test and deleting basket items before basket * Added integration test for DeleteAsync method for BasketItems - Also added a BasketBuilder to create a Basket with no items, or one item.
This commit is contained in:
committed by
Steve Smith
parent
95285593c9
commit
eb02750841
@@ -0,0 +1,46 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate;
|
||||
using Microsoft.eShopWeb.Infrastructure.Data;
|
||||
using Microsoft.eShopWeb.UnitTests.Builders;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Microsoft.eShopWeb.IntegrationTests.Repositories.BasketItemRepositoryTests
|
||||
{
|
||||
public class DeleteAsync_Should
|
||||
{
|
||||
private readonly CatalogContext _catalogContext;
|
||||
private readonly EfRepository<Basket> _basketRepository;
|
||||
private readonly EfRepository<BasketItem> _basketItemRepository;
|
||||
private BasketBuilder BasketBuilder { get; } = new BasketBuilder();
|
||||
private readonly ITestOutputHelper _output;
|
||||
|
||||
public DeleteAsync_Should(ITestOutputHelper output)
|
||||
{
|
||||
_output = output;
|
||||
var dbOptions = new DbContextOptionsBuilder<CatalogContext>()
|
||||
.UseInMemoryDatabase(databaseName: "TestCatalog")
|
||||
.Options;
|
||||
_catalogContext = new CatalogContext(dbOptions);
|
||||
_basketRepository = new EfRepository<Basket>(_catalogContext);
|
||||
_basketItemRepository = new EfRepository<BasketItem>(_catalogContext);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteItemFromBasket()
|
||||
{
|
||||
var existingBasket = BasketBuilder.WithOneBasketItem();
|
||||
_catalogContext.Add(existingBasket);
|
||||
_catalogContext.SaveChanges();
|
||||
|
||||
await _basketItemRepository.DeleteAsync(existingBasket.Items.FirstOrDefault());
|
||||
_catalogContext.SaveChanges();
|
||||
|
||||
var basketFromDB = _basketRepository.GetById(BasketBuilder.BasketId);
|
||||
|
||||
Assert.Equal(0, basketFromDB.Items.Count);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user