Example #1
0
        public void UnknownProduct()
        {
            // Setup
            var handler          = new OrderCreation(_orderRepository, _productCatalog);
            var sellItemsRequest = new SellItemsRequest
            {
                Items = new List <SellItemRequest> {
                    new SellItemRequest {
                        ProductName = "hamburger", Quantity = 1
                    },
                }
            };

            // Exercise & Verify
            Action act = () => handler.Handle(sellItemsRequest);

            act.Should().ThrowExactly <UnknownProductException>();
        }
Example #2
0
        public void SellMultipleItems()
        {
            // Setup
            var handler          = new OrderCreation(_orderRepository, _productCatalog);
            var sellItemsRequest = new SellItemsRequest
            {
                Items = new List <SellItemRequest> {
                    new SellItemRequest {
                        ProductName = "salad", Quantity = 2
                    },
                    new SellItemRequest {
                        ProductName = "tomato", Quantity = 3
                    },
                }
            };

            // Exercise
            handler.Handle(sellItemsRequest);

            // Verify
            var actual = _orderRepository.getLastSavedOrder();

            actual.Total.Should().Be(23.20M);
            actual.Tax.Should().Be(2.13M);
            actual.Currency.Should().Be("EUR");
            actual.Items.Count.Should().Be(2);
            actual.Items.Should().HaveCount(2);
            actual.Items.First().Product.Name.Should().Be("salad");
            actual.Items.First().Product.Price.Should().Be(3.56M);
            actual.Items.First().Quantity.Should().Be(2);
            actual.Items.First().TaxedAmount.Should().Be(7.84M);
            actual.Items.First().Tax.Should().Be(0.72M);
            actual.Items.Last().Product.Name.Should().Be("tomato");
            actual.Items.Last().Product.Price.Should().Be(4.65M);
            actual.Items.Last().Quantity.Should().Be(3);
            actual.Items.Last().TaxedAmount.Should().Be(15.36M);
            actual.Items.Last().Tax.Should().Be(1.41M);
        }