public void WhenActiveCartWithOneItemAndRemoveItemExpectEmptyCart() { var activeCart = new CartStateActive(new[] { Product.ProductY }); var newState = activeCart.Remove(Product.ProductY); var isEmptyState = newState.Func(cartStateEmpty => true, cartStateActive => false, cartStatePaid => false); Assert.IsTrue(isEmptyState); }
public void WhenActiveCartWithOneItemAndAddItemExpectActiveCartWithTwoItems() { var activeCart1 = new CartStateActive(new[] { Product.ProductY }); var newState = activeCart1.Add(Product.ProductX); var isActiveState = newState.Func(cartStateEmpty => false, cartStateActive => true, cartStatePaid => false); Assert.IsTrue(isActiveState); var itemCount = newState.Func(cartStateEmpty => -1, cartStateActive => cartStateActive.Items.Count(), cartStatePaid => -1); Assert.That(itemCount, Is.EqualTo(2)); }
public void WhenActiveCartWithOneItemAndAddItemExpectActiveCartWithTwoItems() { // arrange var activeCart1 = new CartStateActive(new[] { Product.ProductY }); // act var newState = activeCart1.Add(Product.ProductX); // assert var activeState = newState as CartStateActive; //CAST! if (activeState != null) { var itemCount = activeState.Items.Count(); Assert.That(itemCount, Is.EqualTo(2)); } else { Assert.Fail("Expect CartStateActive"); } }
public ICartState Add(Product item) { var newItems = new[] { item }; var newState = new CartStateActive(newItems); return newState; }
public ICartState VisitActive(CartStateActive active) { active.PayForCart(amountToPay); return active; }
public ICartState VisitActive(CartStateActive active) { active.AddItem(productToAdd); return active; }
public void WhenActiveCartWithTwoItemsAndPayExpectPaidCart() { var activeCart = new CartStateActive(new[] { Product.ProductX, Product.ProductY }); const decimal paidAmount = 12.34m; var newState = activeCart.Pay(paidAmount); var isPaidState = newState.Func(cartStateEmpty => false, cartStateActive => false, cartStatePaid => true); Assert.IsTrue(isPaidState); var itemCount = newState.Func(cartStateEmpty => -1, cartStateActive => -1, cartStatePaid => cartStatePaid.Items.Count()); Assert.That(itemCount, Is.EqualTo(2)); var actualPaidAmount = newState.Func(cartStateEmpty => -1, cartStateActive => -1, cartStatePaid => cartStatePaid.Amount); Assert.That(actualPaidAmount, Is.EqualTo(paidAmount)); }
public void WhenActiveCartWithOneItemAndRemoveItemExpectEmptyCart() { // arrange var activeCart = new CartStateActive(new[] { Product.ProductY }); // act var newState = activeCart.Remove(Product.ProductY); // assert var emptyState = newState as CartStateEmpty; //CAST! if (emptyState == null) { Assert.Fail("Expect CartStateEmpty"); } }
public void WhenActiveCartWithTwoItemsAndPayExpectPaidCart() { var activeCart = new CartStateActive(new[] { Product.ProductX, Product.ProductY }); const decimal paidAmount = 12.34m; var newState = activeCart.Pay(paidAmount); // assert var paidState = newState as CartStatePaid; //CAST! if (paidState != null) { var itemCount = paidState.Items.Count(); Assert.That(itemCount, Is.EqualTo(2)); var actualPaidAmount = paidState.Amount; Assert.That(actualPaidAmount, Is.EqualTo(paidAmount)); } else { Assert.Fail("Expect CartStateActive"); } }