public void IsPurchaseReady_ProductNotInStock_ReturnsNotInStock() { Nullable <ProductIssues> expected = ProductIssues.NotInStock; Mock <Product> product = new Mock <Product>(); product.SetupGet(x => x.Active).Returns(true); product.SetupGet(x => x.Id).Returns(Guid.Empty); product.SetupGet(x => x.Quantity).Returns(0); product.SetupGet(x => x.Returns).Returns(new ReadOnlyCollection <Return>(new List <Return>())); Mock <CartProduct> cartProduct = new Mock <CartProduct>(); cartProduct.CallBase = true; cartProduct.SetupGet(x => x.Quantity).Returns(1); cartProduct.SetupGet(x => x.Product).Returns(product.Object); Mock <Cart> cart = new Mock <Cart>(); cart.CallBase = true; cart.SetupGet(x => x.Products) .Returns(new ReadOnlyCollection <CartProduct>(new List <CartProduct>() { cartProduct.Object })); Nullable <ProductIssues> actual = cart.Object.IsPurchaseReady(); actual.ShouldBeEquivalentTo(expected); }
public void IsPurchaseReady_CartEmpty_ReturnsNull() { Nullable <ProductIssues> expected = null; Mock <Cart> cart = new Mock <Cart>(); cart.CallBase = true; cart.SetupGet(x => x.Products).Returns(new ReadOnlyCollection <CartProduct>(new List <CartProduct>())); Nullable <ProductIssues> actual = cart.Object.IsPurchaseReady(); actual.ShouldBeEquivalentTo(expected); }
public void IsPayReady_HasNoCreditCards_PaymentIssueNoCreditCardsAvailable() { Nullable <PaymentIssues> expected = PaymentIssues.NoActiveCreditCardAvailable; Mock <Customer> customer = new Mock <Customer>(); customer.SetupGet(x => x.Balance).Returns(0); customer.Setup(x => x.GetCreditCardsAvailble()) .Returns(new ReadOnlyCollection <CreditCard>(new List <CreditCard>())); Nullable <PaymentIssues> actual = customer.Object.IsPayReady(); actual.ShouldBeEquivalentTo(expected); }
public void IsPayReady_HasUnpaidBalance_PaymentIssueUnpaidBalance() { Nullable <PaymentIssues> expected = PaymentIssues.UnpaidBalance; Mock <Customer> customer = new Mock <Customer>(); customer.SetupGet(x => x.Balance).Returns(-10); //To keep customer locked, use mock to override properties. //Don't make IsPayReady virtual as it will lose it's programmed behaviour Nullable <PaymentIssues> actual = customer.Object.IsPayReady(); actual.ShouldBeEquivalentTo(expected); }