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
2018-12-28 10:40:35 -05:00
committed by Steve Smith
parent 95285593c9
commit eb02750841
6 changed files with 130 additions and 5 deletions

View File

@@ -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);
}