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:
Eric Fleming authored and Steve Smith committed 2018-12-28 07:40:35 -08:00
1 parent 95285593c9
commit eb02750841
6 files changed
+130 -5

No files matched your search

@@ -12,6 +12,7 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
public class BasketService : IBasketService
{
private readonly IAsyncRepository<Basket> _basketRepository;
private readonly IAsyncRepository<BasketItem> _basketItemRepository;
private readonly IUriComposer _uriComposer;
private readonly IAppLogger<BasketService> _logger;
private readonly IRepository<CatalogItem> _itemRepository;
@@ -19,12 +20,14 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
public BasketService(IAsyncRepository<Basket> basketRepository,
IRepository<CatalogItem> itemRepository,
IUriComposer uriComposer,
IAppLogger<BasketService> logger)
IAppLogger<BasketService> logger,
IAsyncRepository<BasketItem> basketItemRepository)
{
_basketRepository = basketRepository;
_uriComposer = uriComposer;
_logger = logger;
_itemRepository = itemRepository;
_basketItemRepository = basketItemRepository;
}
public async Task AddItemToBasket(int basketId, int catalogItemId, decimal price, int quantity)
@@ -40,6 +43,11 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
{
var basket = await _basketRepository.GetByIdAsync(basketId);
foreach (var item in basket.Items)
{
await _basketItemRepository.DeleteAsync(item);
}
await _basketRepository.DeleteAsync(basket);
}