Merge pull request #264 from dotnet-architecture/basket-item-and-aggregate-root-updates
Removing BasketItemRepository as it is not an aggregate root
This commit is contained in:
@@ -5,5 +5,6 @@
|
||||
public decimal UnitPrice { get; set; }
|
||||
public int Quantity { get; set; }
|
||||
public int CatalogItemId { get; set; }
|
||||
public int BasketId { get; private set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,16 +11,13 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
|
||||
public class BasketService : IBasketService
|
||||
{
|
||||
private readonly IAsyncRepository<Basket> _basketRepository;
|
||||
private readonly IAsyncRepository<BasketItem> _basketItemRepository;
|
||||
private readonly IAppLogger<BasketService> _logger;
|
||||
|
||||
public BasketService(IAsyncRepository<Basket> basketRepository,
|
||||
IAppLogger<BasketService> logger,
|
||||
IAsyncRepository<BasketItem> basketItemRepository)
|
||||
IAppLogger<BasketService> logger)
|
||||
{
|
||||
_basketRepository = basketRepository;
|
||||
_logger = logger;
|
||||
_basketItemRepository = basketItemRepository;
|
||||
}
|
||||
|
||||
public async Task AddItemToBasket(int basketId, int catalogItemId, decimal price, int quantity)
|
||||
@@ -35,12 +32,6 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
|
||||
public async Task DeleteBasketAsync(int basketId)
|
||||
{
|
||||
var basket = await _basketRepository.GetByIdAsync(basketId);
|
||||
|
||||
foreach (var item in basket.Items.ToList())
|
||||
{
|
||||
await _basketItemRepository.DeleteAsync(item);
|
||||
}
|
||||
|
||||
await _basketRepository.DeleteAsync(basket);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,28 +10,25 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
|
||||
public class DeleteBasket
|
||||
{
|
||||
private Mock<IAsyncRepository<Basket>> _mockBasketRepo;
|
||||
private Mock<IAsyncRepository<BasketItem>> _mockBasketItemRepo;
|
||||
|
||||
public DeleteBasket()
|
||||
{
|
||||
_mockBasketRepo = new Mock<IAsyncRepository<Basket>>();
|
||||
_mockBasketItemRepo = new Mock<IAsyncRepository<BasketItem>>();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Should_InvokeBasketRepoOnceAndBasketItemRepoTwice_Given_TwoItemsInBasket()
|
||||
public async Task Should_InvokeBasketRepositoryDeleteAsync_Once()
|
||||
{
|
||||
var basket = new Basket();
|
||||
basket.AddItem(1, It.IsAny<decimal>(), It.IsAny<int>());
|
||||
basket.AddItem(2, It.IsAny<decimal>(), It.IsAny<int>());
|
||||
_mockBasketRepo.Setup(x => x.GetByIdAsync(It.IsAny<int>()))
|
||||
.ReturnsAsync(basket);
|
||||
var basketService = new BasketService(_mockBasketRepo.Object, null, _mockBasketItemRepo.Object);
|
||||
var basketService = new BasketService(_mockBasketRepo.Object, null);
|
||||
|
||||
await basketService.DeleteBasketAsync(It.IsAny<int>());
|
||||
|
||||
_mockBasketRepo.Verify(x => x.DeleteAsync(It.IsAny<Basket>()), Times.Once);
|
||||
_mockBasketItemRepo.Verify(x => x.DeleteAsync(It.IsAny<BasketItem>()), Times.Exactly(2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
|
||||
[Fact]
|
||||
public async void ThrowsGivenInvalidBasketId()
|
||||
{
|
||||
var basketService = new BasketService(_mockBasketRepo.Object, null, null);
|
||||
var basketService = new BasketService(_mockBasketRepo.Object, null);
|
||||
|
||||
await Assert.ThrowsAsync<BasketNotFoundException>(async () =>
|
||||
await basketService.SetQuantities(_invalidId, new System.Collections.Generic.Dictionary<string, int>()));
|
||||
@@ -30,7 +30,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
|
||||
[Fact]
|
||||
public async void ThrowsGivenNullQuantities()
|
||||
{
|
||||
var basketService = new BasketService(null, null, null);
|
||||
var basketService = new BasketService(null, null);
|
||||
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(async () =>
|
||||
await basketService.SetQuantities(123, null));
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
|
||||
[Fact]
|
||||
public async void ThrowsGivenNullAnonymousId()
|
||||
{
|
||||
var basketService = new BasketService(null, null, null);
|
||||
var basketService = new BasketService(null, null);
|
||||
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(async () => await basketService.TransferBasketAsync(null, "steve"));
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
|
||||
[Fact]
|
||||
public async void ThrowsGivenNullUserId()
|
||||
{
|
||||
var basketService = new BasketService(null, null, null);
|
||||
var basketService = new BasketService(null, null);
|
||||
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(async () => await basketService.TransferBasketAsync("abcdefg", null));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user