Allow to remove items from the basket setting quantity to zero

This commit is contained in:
Ovi
2019-09-11 09:16:00 -04:00
parent c370b8affb
commit 70e009bda2
7 changed files with 69 additions and 9 deletions

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate;
using Microsoft.eShopWeb.ApplicationCore.Interfaces;
using Microsoft.eShopWeb.ApplicationCore.Services;
using Microsoft.eShopWeb.Infrastructure.Data;
using Microsoft.eShopWeb.UnitTests.Builders;
using Xunit;
namespace Microsoft.eShopWeb.IntegrationTests.Repositories.BasketRepositoryTests
{
public class SetQuantities
{
private readonly CatalogContext _catalogContext;
private readonly IAsyncRepository<Basket> _basketRepository;
private readonly BasketBuilder BasketBuilder = new BasketBuilder();
public SetQuantities()
{
var dbOptions = new DbContextOptionsBuilder<CatalogContext>()
.UseInMemoryDatabase(databaseName: "TestCatalog")
.Options;
_catalogContext = new CatalogContext(dbOptions);
_basketRepository = new EfRepository<Basket>(_catalogContext);
}
[Fact]
public async Task RemoveEmptyQuantities()
{
var basket = BasketBuilder.WithOneBasketItem();
var basketService = new BasketService(_basketRepository, null);
await _basketRepository.AddAsync(basket);
_catalogContext.SaveChanges();
await basketService.SetQuantities(BasketBuilder.BasketId, new Dictionary<string, int>() { { BasketBuilder.BasketId.ToString(), 0 } });
Assert.Equal(0, basket.Items.Count);
}
}
}

View File

@@ -53,5 +53,15 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Entities.BasketTests
var firstItem = basket.Items.Single();
Assert.Equal(1, firstItem.Quantity);
}
[Fact]
public void RemoveEmptyItems()
{
var basket = new Basket();
basket.AddItem(_testCatalogItemId, _testUnitPrice, 0);
basket.RemoveEmptyItems();
Assert.Equal(0, basket.Items.Count);
}
}
}

View File

@@ -5,13 +5,14 @@ using Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate;
using Moq;
using System;
using Xunit;
using System.Threading.Tasks;
namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTests
{
public class SetQuantities
{
private int _invalidId = -1;
private Mock<IAsyncRepository<Basket>> _mockBasketRepo;
private readonly int _invalidId = -1;
private readonly Mock<IAsyncRepository<Basket>> _mockBasketRepo;
public SetQuantities()
{
@@ -19,7 +20,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
}
[Fact]
public async void ThrowsGivenInvalidBasketId()
public async Task ThrowsGivenInvalidBasketId()
{
var basketService = new BasketService(_mockBasketRepo.Object, null);
@@ -28,7 +29,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
}
[Fact]
public async void ThrowsGivenNullQuantities()
public async Task ThrowsGivenNullQuantities()
{
var basketService = new BasketService(null, null);

View File

@@ -1,5 +1,6 @@
using Microsoft.eShopWeb.ApplicationCore.Services;
using System;
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTests
@@ -7,7 +8,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
public class TransferBasket
{
[Fact]
public async void ThrowsGivenNullAnonymousId()
public async Task ThrowsGivenNullAnonymousId()
{
var basketService = new BasketService(null, null);
@@ -15,7 +16,7 @@ namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Services.BasketServiceTes
}
[Fact]
public async void ThrowsGivenNullUserId()
public async Task ThrowsGivenNullUserId()
{
var basketService = new BasketService(null, null);