Exemple #1
0
        public void ItShouldIncludeQuantityOnTheOrderSentToFulfilment()
        {
            var customerDetails = new CustomerDetails {
                Email = "*****@*****.**"
            };
            var orderLine = new UnvalidatedOrderLine {
                ProductCode = "W1234", Quantity = 10
            };
            var orderForm = new OrderForm {
                CustomerDetails = customerDetails, OrderLines = new[] { orderLine }
            };

            var widget = new Widget {
                Code = orderLine.ProductCode
            };
            var productCatalogue = A.Fake <IProductCatalogue>();

            A.CallTo(() => productCatalogue.Get(orderLine.ProductCode)).Returns(widget);

            var processedOrderLineFactory = new OrderLineFactory(productCatalogue);

            var   fulfilment    = A.Fake <IFulfilment>();
            Order capturedOrder = null;

            A.CallTo(() => fulfilment.Process(A <Order> ._)).Invokes((Order o) => capturedOrder = o);

            var sut = new Orders(A.Dummy <ICustomers>(), processedOrderLineFactory, fulfilment);

            sut.Process(orderForm);

            var widgetOrderLine = (WidgetOrderLine)capturedOrder.OrderLines[0];

            Assert.Equal(10, widgetOrderLine.Quantity);
        }
Exemple #2
0
        public void ItShouldThrowAnInvalidException()
        {
            var customerDetails = new CustomerDetails {
                Email = "*****@*****.**"
            };
            var orderLine = new UnvalidatedOrderLine {
                ProductCode = "W123", Quantity = 1
            };
            var orderForm = new OrderForm {
                CustomerDetails = customerDetails, OrderLines = new[] { orderLine }
            };

            var sut = new Orders(A.Dummy <ICustomers>(), A.Dummy <IOrderLineFactory>(), A.Dummy <IFulfilment>());

            Assert.Throws <InvalidException>(() => sut.Process(orderForm));
        }
Exemple #3
0
        public void ItShouldThrowNotFoundException()
        {
            var customerDetails = new CustomerDetails {
                Email = "*****@*****.**"
            };
            var orderLine = new UnvalidatedOrderLine {
                ProductCode = "W1234", Quantity = 1
            };
            var orderForm = new OrderForm {
                CustomerDetails = customerDetails, OrderLines = new[] { orderLine }
            };

            var productCatalogue = A.Fake <IProductCatalogue>();

            A.CallTo(() => productCatalogue.Get(orderLine.ProductCode))
            .Throws(new NotFoundException("Widget not found: " + orderLine.ProductCode));

            var processedOrderLineFactory = new OrderLineFactory(productCatalogue);

            var sut = new Orders(A.Dummy <ICustomers>(), processedOrderLineFactory, A.Dummy <IFulfilment>());

            Assert.Throws <NotFoundException>(() => sut.Process(orderForm));
        }