Adding guards and more tests (#68)

* Adding single entity by spec method to repository

* Adding guards and more unit tests
This commit is contained in:
Steve Smith
2017-10-30 11:53:29 -07:00
committed by GitHub
parent 3d46c80cff
commit b864be9265
10 changed files with 119 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ using System.Collections.Generic;
using ApplicationCore.Specifications;
using Microsoft.eShopWeb.ApplicationCore.Entities;
using System.Linq;
using Ardalis.GuardClauses;
namespace ApplicationCore.Services
{
@@ -43,6 +44,7 @@ namespace ApplicationCore.Services
public async Task<int> GetBasketItemCountAsync(string userName)
{
Guard.Against.NullOrEmpty(userName, nameof(userName));
var basketSpec = new BasketWithItemsSpecification(userName);
var basket = (await _basketRepository.ListAsync(basketSpec)).FirstOrDefault();
if (basket == null)
@@ -57,7 +59,9 @@ namespace ApplicationCore.Services
public async Task SetQuantities(int basketId, Dictionary<string, int> quantities)
{
Guard.Against.Null(quantities, nameof(quantities));
var basket = await _basketRepository.GetByIdAsync(basketId);
Guard.Against.NullBasket(basketId, basket);
foreach (var item in basket.Items)
{
if (quantities.TryGetValue(item.Id.ToString(), out var quantity))
@@ -71,6 +75,8 @@ namespace ApplicationCore.Services
public async Task TransferBasketAsync(string anonymousId, string userName)
{
Guard.Against.NullOrEmpty(anonymousId, nameof(anonymousId));
Guard.Against.NullOrEmpty(userName, nameof(userName));
var basketSpec = new BasketWithItemsSpecification(anonymousId);
var basket = (await _basketRepository.ListAsync(basketSpec)).FirstOrDefault();
if (basket == null) return;

View File

@@ -3,6 +3,7 @@ using ApplicationCore.Entities.OrderAggregate;
using System.Threading.Tasks;
using Microsoft.eShopWeb.ApplicationCore.Entities;
using System.Collections.Generic;
using Ardalis.GuardClauses;
namespace ApplicationCore.Services
{
@@ -24,6 +25,7 @@ namespace ApplicationCore.Services
public async Task CreateOrderAsync(int basketId, Address shippingAddress)
{
var basket = await _basketRepository.GetByIdAsync(basketId);
Guard.Against.NullBasket(basketId, basket);
var items = new List<OrderItem>();
foreach (var item in basket.Items)
{