public void UnknownProduct()
        {
            var request = new SellItemsRequest {
                Requests = new List <SellItemRequest>()
            };
            var unknownProductRequest = new SellItemRequest {
                ProductName = "unknown product"
            };

            request.Requests.Add(unknownProductRequest);

            Assert.Throws <UnknownProductException>(() => useCase.Run(request));
        }
Example #2
0
        public void unknownProduct()
        {
            SellItemsRequest request = new SellItemsRequest();

            request.setRequests(new List <SellItemRequest>());
            SellItemRequest unknownProductRequest = new SellItemRequest();

            unknownProductRequest.setProductName("unknown product");
            request.getRequests().Add(unknownProductRequest);

            Assert.That(() => useCase.run(request),
                        Throws.TypeOf <UnknownProductException>());
        }
Example #3
0
        public void SellMultipleItems()
        {
            SellItemRequest saladRequest = new SellItemRequest
            {
                ProductName = "salad",
                Quantity    = 2
            };

            SellItemRequest tomatoRequest = new SellItemRequest
            {
                ProductName = "tomato",
                Quantity    = 3
            };

            SellItemsRequest request =
                new SellItemsRequest
            {
                Requests = new List <SellItemRequest>
                {
                    saladRequest,
                    tomatoRequest
                }
            };

            useCase.Run(request);

            Order insertedOrder = orderRepository.SavedOrder;

            Assert.Equal(OrderStatus.Created, insertedOrder.Status);
            Assert.Equal(23.20m, insertedOrder.Total);
            Assert.Equal(2.13m, insertedOrder.Tax);
            Assert.Equal("EUR", insertedOrder.Currency);
            Assert.Equal(2, insertedOrder.Items.Count());

            var saladItem = insertedOrder.Items.ElementAt(0);

            Assert.Equal("salad", saladItem.Name);
            Assert.Equal(3.56m, saladItem.Price);
            Assert.Equal(2, saladItem.Quantity);
            Assert.Equal(7.84m, saladItem.TaxedAmount);
            Assert.Equal(0.72m, saladItem.Tax);

            var tomatoItem = insertedOrder.Items.ElementAt(1);

            Assert.Equal("tomato", tomatoItem.Name);
            Assert.Equal(4.65m, tomatoItem.Price);
            Assert.Equal(3, tomatoItem.Quantity);
            Assert.Equal(15.36m, tomatoItem.TaxedAmount);
            Assert.Equal(1.41m, tomatoItem.Tax);
        }
Example #4
0
        public void UnknownProduct()
        {
            SellItemsRequest request = new SellItemsRequest();

            request.SetRequests(new List <SellItemRequest>());
            SellItemRequest unknownProductRequest = new SellItemRequest();

            unknownProductRequest.SetProductName("unknown product");
            request.GetRequests().Add(unknownProductRequest);

            Action act = () => useCase.Run(request);

            act.Should().Throw <UnknownProductException>();
        }
        public void UnknownProduct()
        {
            SellItemsRequest request = new SellItemsRequest();

            request.Requests = new List <SellItemRequest>();
            SellItemRequest unknownProductRequest = new SellItemRequest();

            unknownProductRequest.ProductName = "unknown product";
            request.Requests.Add(unknownProductRequest);

            Action action = () => useCase.Run(request);

            action.Should().Throw <UnknownProductException>();
        }
        public void UnknownProduct()
        {
            var request = new SellItemsRequest
            {
                Requests = new List <SellItemRequest> {
                    new SellItemRequest {
                        ProductName = "unknown product"
                    }
                }
            };

            Action actionToTest = () => _useCase.Run(request);

            Assert.Throws <UnknownProductException>(actionToTest);
        }
Example #7
0
        public void maximumNumberOfFoodItemsExceededWithSingleQuantity()
        {
            SellItemsRequest tooManyFoodItemsRequest = new SellItemsRequest();

            tooManyFoodItemsRequest.SetRequests(new List <SellItemRequest>());

            for (int i = 0; i <= 100; i++)
            {
                SellItemRequest foodItemRequest = new SellItemRequest();
                foodItemRequest.SetProductName("salad");
                foodItemRequest.SetQuantity(1);
                tooManyFoodItemsRequest.GetRequests().Add(foodItemRequest);
            }

            Action act = () => useCase.Run(tooManyFoodItemsRequest);

            act.Should().Throw <MaximumNumberOfFoodItemsExceeded>();
        }
Example #8
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>();
        }
        public void SellMultipleItems()
        {
            var saladRequest = new SellItemRequest
            {
                ProductName = "salad",
                Quantity    = 2
            };

            var tomatoRequest = new SellItemRequest
            {
                ProductName = "tomato",
                Quantity    = 3
            };

            var request = new SellItemsRequest
            {
                Requests = new List <SellItemRequest> {
                    saladRequest, tomatoRequest
                }
            };

            _useCase.Run(request);

            Order insertedOrder = _orderRepository.GetSavedOrder();

            Assert.Equal(OrderStatus.Created, insertedOrder.Status);
            Assert.Equal(23.20m, insertedOrder.Total);
            Assert.Equal(2.13m, insertedOrder.Tax);
            Assert.Equal("EUR", insertedOrder.Currency);
            Assert.Equal(2, insertedOrder.Items.Count);
            Assert.Equal("salad", insertedOrder.Items[0].Product.Name);
            Assert.Equal(3.56m, insertedOrder.Items[0].Product.Price);
            Assert.Equal(2, insertedOrder.Items[0].Quantity);
            Assert.Equal(7.84m, insertedOrder.Items[0].TaxedAmount);
            Assert.Equal(0.72m, insertedOrder.Items[0].Tax);
            Assert.Equal("tomato", insertedOrder.Items[1].Product.Name);
            Assert.Equal(4.65m, insertedOrder.Items[1].Product.Price);
            Assert.Equal(3, insertedOrder.Items[1].Quantity);
            Assert.Equal(15.36m, insertedOrder.Items[1].TaxedAmount);
            Assert.Equal(1.41m, insertedOrder.Items[1].Tax);
        }
Example #10
0
        public void MaximumNumberOfFoodItemsExceededWithMultipleQuantity()
        {
            SellItemsRequest tooManyFoodItemsRequest = new SellItemsRequest();

            tooManyFoodItemsRequest.SetRequests(new List <SellItemRequest>());

            SellItemRequest foodItemRequest = new SellItemRequest();

            foodItemRequest.SetProductName("salad");
            foodItemRequest.SetQuantity(30);
            tooManyFoodItemsRequest.GetRequests().Add(foodItemRequest);

            foodItemRequest = new SellItemRequest();
            foodItemRequest.SetProductName("tomato");
            foodItemRequest.SetQuantity(71);
            tooManyFoodItemsRequest.GetRequests().Add(foodItemRequest);

            Action act = () => useCase.Run(tooManyFoodItemsRequest);

            act.Should().Throw <MaximumNumberOfFoodItemsExceeded>();
        }
Example #11
0
        public void SellMultipleItems()
        {
            SellItemRequest saladRequest = new SellItemRequest();

            saladRequest.SetProductName("salad");
            saladRequest.SetQuantity(2);

            SellItemRequest tomatoRequest = new SellItemRequest();

            tomatoRequest.SetProductName("tomato");
            tomatoRequest.SetQuantity(3);

            SellItemsRequest request = new SellItemsRequest();

            request.SetRequests(new List <SellItemRequest>()
            {
                saladRequest, tomatoRequest
            });

            useCase.Run(request);

            Order insertedOrder = orderRepository.GetSavedOrder();

            insertedOrder.GetStatus().Should().Be(OrderStatus.Created);
            insertedOrder.GetTotal().Should().Be((decimal)23.20);
            insertedOrder.GetTax().Should().Be((decimal)2.13);
            insertedOrder.GetCurrency().Should().Be("EUR");
            insertedOrder.GetItems().Should().HaveCount(2);
            insertedOrder.GetItems()[0].GetProduct().GetName().Should().Be("salad");
            insertedOrder.GetItems()[0].GetProduct().GetPrice().Should().Be((decimal)3.56);
            insertedOrder.GetItems()[0].getQuantity().Should().Be(2);
            insertedOrder.GetItems()[0].GetTaxedAmount().Should().Be((decimal)7.84);
            insertedOrder.GetItems()[0].GetTax().Should().Be((decimal)0.72);
            insertedOrder.GetItems()[1].GetProduct().GetName().Should().Be("tomato");
            insertedOrder.GetItems()[1].GetProduct().GetPrice().Should().Be((decimal)4.65);
            insertedOrder.GetItems()[1].getQuantity().Should().Be(3);
            insertedOrder.GetItems()[1].GetTaxedAmount().Should().Be((decimal)15.36);
            insertedOrder.GetItems()[1].GetTax().Should().Be((decimal)1.41);
        }
Example #12
0
        public void sellMultipleItems()
        {
            SellItemRequest saladRequest = new SellItemRequest();

            saladRequest.setProductName("salad");
            saladRequest.setQuantity(2);

            SellItemRequest tomatoRequest = new SellItemRequest();

            tomatoRequest.setProductName("tomato");
            tomatoRequest.setQuantity(3);

            SellItemsRequest request = new SellItemsRequest();

            request.setRequests(new List <SellItemRequest>());
            request.getRequests().Add(saladRequest);
            request.getRequests().Add(tomatoRequest);

            useCase.run(request);

            Order insertedOrder = orderRepository.getSavedOrder();

            Assert.That(insertedOrder.getStatus(), Is.EqualTo(OrderStatus.CREATED));
            Assert.That(insertedOrder.getTotal(), Is.EqualTo(new BigDecimal(23.20).SetScale(2, RoundingMode.HalfUp)));
            Assert.That(insertedOrder.getTax(), Is.EqualTo(new BigDecimal(2.13).SetScale(2, RoundingMode.HalfUp)));
            Assert.That(insertedOrder.getCurrency(), Is.EqualTo("EUR"));
            Assert.That(insertedOrder.getItems().Count(), Is.EqualTo(2));
            Assert.That(insertedOrder.getItems()[0].getProduct().getName(), Is.EqualTo("salad"));
            Assert.That(insertedOrder.getItems()[0].getProduct().getPrice(), Is.EqualTo(new BigDecimal(3.56)));
            Assert.That(insertedOrder.getItems()[0].getQuantity(), Is.EqualTo(2));
            Assert.That(insertedOrder.getItems()[0].getTaxedAmount(), Is.EqualTo(new BigDecimal(7.84).SetScale(2, RoundingMode.HalfUp)));
            Assert.That(insertedOrder.getItems()[0].getTax(), Is.EqualTo(new BigDecimal(0.72).SetScale(2, RoundingMode.HalfUp)));
            Assert.That(insertedOrder.getItems()[1].getProduct().getName(), Is.EqualTo("tomato"));
            Assert.That(insertedOrder.getItems()[1].getProduct().getPrice(), Is.EqualTo(new BigDecimal(4.65)));
            Assert.That(insertedOrder.getItems()[1].getQuantity(), Is.EqualTo(3));
            Assert.That(insertedOrder.getItems()[1].getTaxedAmount(), Is.EqualTo(new BigDecimal(15.36).SetScale(2, RoundingMode.HalfUp)));
            Assert.That(insertedOrder.getItems()[1].getTax(), Is.EqualTo(new BigDecimal(1.41).SetScale(2, RoundingMode.HalfUp)));
        }
Example #13
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);
        }
        public void SellMultipleItems()
        {
            SellItemRequest saladRequest = new SellItemRequest();

            saladRequest.ProductName = "salad";
            saladRequest.Quantity    = 2;

            SellItemRequest tomatoRequest = new SellItemRequest();

            tomatoRequest.ProductName = "tomato";
            tomatoRequest.Quantity    = 3;

            SellItemsRequest request = new SellItemsRequest();

            request.Requests = new List <SellItemRequest>();
            request.Requests.Add(saladRequest);
            request.Requests.Add(tomatoRequest);

            useCase.Run(request);

            Order insertedOrder = orderRepository.GetSavedOrder();

            insertedOrder.Status.Should().Be(OrderStatus.Created);
            insertedOrder.Total.Should().Be(23.20M);
            insertedOrder.Tax.Should().Be(2.13M);
            insertedOrder.Currency.Should().Be("EUR");
            insertedOrder.Items.Should().HaveCount(2);
            insertedOrder.Items[0].Product.Name.Should().Be("salad");
            insertedOrder.Items[0].Product.Price.Should().Be(3.56M);
            insertedOrder.Items[0].Quantity.Should().Be(2);
            insertedOrder.Items[0].TaxedAmount.Should().Be(7.84M);
            insertedOrder.Items[0].Tax.Should().Be(0.72M);
            insertedOrder.Items[1].Product.Name.Should().Be("tomato");
            insertedOrder.Items[1].Product.Price.Should().Be(4.65M);
            insertedOrder.Items[1].Quantity.Should().Be(3);
            insertedOrder.Items[1].TaxedAmount.Should().Be(15.36M);
            insertedOrder.Items[1].Tax.Should().Be(1.41M);
        }