public void CheckoutCommand_NotExecutable_IfNoItemsInCart()
{
var navigationService = new MockNavigationService();
var shoppingCartRepository = new MockShoppingCartRepository();
shoppingCartRepository.GetShoppingCartAsyncDelegate = () => Task.FromResult<ShoppingCart>(null);
var eventAggregator = new MockEventAggregator();
eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();
var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, null, null, null, null, null, null, eventAggregator);
target.UpdateShoppingCartAsync(null);
Assert.IsFalse(target.CheckoutCommand.CanExecute());
shoppingCartRepository.GetShoppingCartAsyncDelegate =
() => Task.FromResult(new ShoppingCart(new Collection<ShoppingCartItem>()){Currency = "USD", FullPrice = 0, TaxRate = 0, TotalDiscount = 0, TotalPrice = 0});
target.UpdateShoppingCartAsync(null);
Assert.IsFalse(target.CheckoutCommand.CanExecute());
shoppingCartRepository.GetShoppingCartAsyncDelegate =
() => Task.FromResult(new ShoppingCart(new Collection<ShoppingCartItem> { new ShoppingCartItem{Product = new Product(), Currency = "USD", Quantity = 0} })
{ Currency = "USD", FullPrice = 0, TaxRate = 0, TotalDiscount = 0, TotalPrice = 0 });
target.UpdateShoppingCartAsync(null);
Assert.IsTrue(target.CheckoutCommand.CanExecute());
}