예제 #1
0
        public void Checkout_SavesBillToSalesHistory()
        {
            //Arrange
            var salesHistoryServiceMock = GetSalesHistoryServiceMockWithActions();
            var productsBasket          = new ProductsBasket(salesHistoryServiceMock.Object, null, GetDataServiceWithNoSetup());

            //Act
            var bill = productsBasket.Checkout();

            //Assert
            salesHistoryServiceMock.Verify(m => m.Add(It.IsAny <Bill>()), Times.Once);
            bill.Should().NotBeNull();
        }
예제 #2
0
        public void Checkout_ContainsAllDiscountsFromProvider()
        {
            //Arrange
            var discountsProviderMock = new Mock <IDiscountRulesService>();
            var discountRules         = new[]
            {
                new Mock <IDiscountRule>().Object,
                new Mock <IDiscountRule>().Object,
                new Mock <IDiscountRule>().Object
            };

            discountsProviderMock.Setup(m => m.GetAllDiscountRules()).Returns(discountRules);
            var productsBasket = new ProductsBasket(GetSalesHistoryServiceWithNoSetup(), discountsProviderMock.Object, GetDataServiceWithNoSetup());

            //Act
            var bill = productsBasket.Checkout();

            //Assert
            bill.DiscountsRules.Should().BeEquivalentTo(discountRules);
        }
예제 #3
0
 private void InitSession()
 {
     _productBasket = _httpContext.Session["Products"] as ProductsBasket;
     if (_productBasket == null)
     {
         _httpContext.Session["Products"] = new ProductsBasket();
         _productBasket = _httpContext.Session["Products"] as ProductsBasket;
         for (int i = 1; i <= 15; i++)
         {
             _productBasket.Products.Add(new Product()
             {
                 Id           = Guid.NewGuid(),
                 Name         = "Product" + i,
                 Quantity     = rnd.Next(1, 1000),
                 unit         = (Units)Enum.GetValues(typeof(Units)).GetValue(rnd.Next(5)),
                 DateOfCreate = DateTime.Now
             });
         }
     }
 }