Esempio n. 1
0
        private static CartsContext generateCartContext(string databaseName)
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase(databaseName).Options;
            var _cartContext = new CartsContext(_cartOptions);


            CartsModel cartModel = new CartsModel
            {
                id             = 1,
                userId         = 1,
                shippingMethod = "Cash on Delivery",
                subtotal       = (Decimal)12.95,
                shippingFee    = (Decimal)50.00,
                total          = (Decimal)62.95
            };

            _cartContext.Carts.Add(cartModel);

            CartProductsModel cartProduct = new CartProductsModel
            {
                id        = 1,
                productId = 2,
                cartId    = 1,
                quantity  = 1,
            };

            _cartContext.CartProducts.Add(cartProduct);
            _cartContext.SaveChanges();
            return(_cartContext);
        }
        private static CartsContext createCartsContext(string databaseName)
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase(databaseName).Options;
            var _cartContext = new CartsContext(_cartOptions);

            return(_cartContext);
        }
Esempio n. 3
0
        public void When_Calculate_Cart_With_One_Product_Price_119_95_Should_Be_Total_equal_169_95()
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("calculate_carts").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var        _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("calculate_products").Options;
            var        _productContext = new ProductsContext(_productOptions);
            CartsModel cartModel       = new CartsModel {
                userId         = 1,
                createDatetime = DateTime.Now,
                updateDatetime = DateTime.Now
            };
            List <ProductInCartModel> productsInCart = new List <ProductInCartModel>();

            productsInCart.Add(new ProductInCartModel {
                price    = (Decimal)119.95,
                quantity = 1
            });

            CartsService cartsService = new CartsService(_cartContext, _productContext);
            var          actualResult = cartsService.calculate(cartModel, productsInCart);

            Assert.Equal((Decimal)119.95, actualResult.subtotal);
            Assert.Equal((Decimal)144.95, actualResult.total);
        }
Esempio n. 4
0
        public void When_Create_New_Cart_With_Product_ID2_And_Quantity2_And_Should_Be_Get_CartID1()
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("create_new_cart_carts").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("create_new_cart_products").Options;
            var _productContext = new ProductsContext(_productOptions);

            ProductsModel productsData = new ProductsModel {
                id                = 2,
                name              = "43 Piece dinner Set",
                price             = (Decimal)12.95,
                availability      = "InStock",
                stockAvailability = 10,
                age               = "3_to_5",
                gender            = "FEMALE",
                brand             = "CoolKidz"
            };

            _productContext.Products.Add(productsData);
            _productContext.SaveChanges();

            CartsService cartsService = new CartsService(_cartContext, _productContext);
            var          actualResult = cartsService.add(productsData, 1);

            Assert.Equal(1, actualResult.id);
        }
Esempio n. 5
0
        public void When_Calculate_Cart_With_Two_Products_Price_12_95_and_110_95_Should_Be_Total_equal_173_90()
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("carts").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var        _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("products").Options;
            var        _productContext = new ProductsContext(_productOptions);
            CartsModel cartModel       = new CartsModel {
                userId         = 1,
                createDatetime = DateTime.Now,
                updateDatetime = DateTime.Now
            };
            List <ProductInCartModel> productsInCart = new List <ProductInCartModel>();

            productsInCart.Add(new ProductInCartModel {
                price    = 12.95M,
                quantity = 1
            });
            productsInCart.Add(new ProductInCartModel {
                price    = 110.95M,
                quantity = 1
            });

            CartsService cartsService = new CartsService(_cartContext, _productContext);
            var          actualResult = cartsService.calculate(cartModel, productsInCart);

            Assert.Equal(123.90M, actualResult.subtotal);
            Assert.Equal(148.90M, actualResult.total);
        }
Esempio n. 6
0
        public void When_Get_Cart_By_Id_1_And_Should_Be_Get_This_Cart_Detail()
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("get_carts_carts_detail").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("get_carts_carts_products_detail").Options;
            var _productContext = new ProductsContext(_productOptions);

            CartsModel cartModel = new CartsModel {
                id          = 1,
                userId      = 1,
                subtotal    = (Decimal)12.95,
                shippingFee = (Decimal)50.00,
                total       = (Decimal)62.95
            };

            _cartContext.Carts.Add(cartModel);

            CartProductsModel cartProduct = new CartProductsModel {
                id        = 1,
                productId = 2,
                cartId    = 1,
                quantity  = 1,
            };

            _cartContext.CartProducts.Add(cartProduct);
            _cartContext.SaveChanges();

            ProductsModel productData = new ProductsModel {
                id                = 2,
                name              = "43 Piece dinner Set",
                price             = (Decimal)12.95,
                availability      = "InStock",
                stockAvailability = 10,
                age               = "3_to_5",
                gender            = "FEMALE",
                brand             = "CoolKidz"
            };

            _productContext.Products.Add(productData);
            _productContext.SaveChanges();

            CartsService cartsService = new CartsService(_cartContext, _productContext);
            var          actualResult = cartsService.getCart(1, 1);

            Assert.Equal(cartModel, actualResult);
        }
        public void When_Create_New_Cart_With_43_Piece_Dinner_Set_With_1_Qty_Should_Return_Cart_Detail_With_43_Piece_Dinner_Set()
        {
            ProductsModel adding_product  = _fixture._2_43_Piece_dinner_Set;
            int           adding_quantity = 1;

            CartsContext _cartContext = createCartsContext("create_new_cart_carts2");
            CartsModel   expectedCart = createCartInfo(adding_product, adding_quantity);

            CartsService       cartService = new CartsService(_cartContext, _productContext);
            AddCartOutputModel cartOutput  = cartService.add(adding_product, adding_quantity);
            CartsModel         actualCart  = cartService.getCart(cartOutput.id, DEFAULT_USER_ID);

            Assert.Equal(expectedCart.CartProducts, actualCart.CartProducts);
            Assert.Equal(expectedCart.userId, actualCart.userId);
            Assert.Equal(expectedCart.total, actualCart.total);
            Assert.Equal(expectedCart.subtotal, actualCart.subtotal);
            Assert.Equal(expectedCart.shippingFee, actualCart.shippingFee);
            Assert.Equal(expectedCart.shippingMethod, actualCart.shippingMethod);
        }
Esempio n. 8
0
        public void When_Calculate_Cart_With_Zero_Product_Should_Be_Total_equal_0()
        {
            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("carts").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var        _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("products").Options;
            var        _productContext = new ProductsContext(_productOptions);
            CartsModel cartModel       = new CartsModel {
                userId         = 1,
                createDatetime = DateTime.Now,
                updateDatetime = DateTime.Now
            };
            List <ProductInCartModel> productsInCart = new List <ProductInCartModel>();
            CartsService cartsService = new CartsService(_cartContext, _productContext);
            var          actualResult = cartsService.calculate(cartModel, productsInCart);

            Assert.Equal(0.00M, actualResult.subtotal);
            Assert.Equal(0.00M, actualResult.total);
        }
 public CartsService(CartsContext context, ProductsContext productContext)
 {
     _context        = context;
     _productContext = productContext;
 }
Esempio n. 10
0
        public void When_Create_Order_With_Cart_Should_Be_Return_Order()
        {
            var _productContext = new DatabaseProductDummy().productContext;

            OrdersContext _orderContext = generateOrderContext("create_order_orders_2");

            CartsContext _cartContext = generateCartContext("create_order_carts_detail_2");

            OrdersModel ordersModel = new OrdersModel {
                cartId         = 1,
                userId         = 1,
                subtotal       = (Decimal)12.95,
                total          = (Decimal)62.95,
                shippingMethod = "Cash on Delivery",
                shippingFee    = 50,
                fullname       = "Chonnikan Tobunrueang",
                address1       = "3 อาคารพร้อมพันธ์ 3 ห้อง 1001",
                address2       = "จอมพล",
                city           = "จตุจักร",
                province       = "กรุงเทพ",
                postcode       = "10900",
                createDatetime = DateTime.Now,
            };

            OrderProductsModel orderProductsModel = new OrderProductsModel {
                orderId           = 1,
                productId         = 2,
                quantity          = 1,
                name              = "43 Piece dinner Set",
                price             = (Decimal)12.95,
                availability      = "InStock",
                stockAvailability = 10,
                age    = "3_to_5",
                gender = "FEMALE",
                brand  = "CoolKidz"
            };

            OrderDetailOutput expectedResult = new OrderDetailOutput {
                order    = ordersModel,
                products = new ProductsListOutput {
                    total = 1,
                    data  = new List <OrderProductsModel>()
                    {
                        orderProductsModel
                    },
                }
            };

            OrdersService          ordersService = new OrdersService(_cartContext, _productContext, _orderContext);
            CreateOrderOutputModel order         = ordersService.create(1, 1);

            var actual = ordersService.get(order.id);

            Assert.Equal(order.id, actual.order.id);
            Assert.Equal(expectedResult.order.subtotal, actual.order.subtotal);
            Assert.Equal(expectedResult.order.total, actual.order.total);
            Assert.Equal(expectedResult.order.shippingMethod, actual.order.shippingMethod);
            Assert.Equal(expectedResult.order.shippingFee, actual.order.shippingFee);
            Assert.Equal(expectedResult.order.fullname, actual.order.fullname);
            Assert.Equal(expectedResult.order.address1, actual.order.address1);
            Assert.Equal(expectedResult.products.data, actual.products.data);


            _productContext.Database.EnsureDeleted();
            _cartContext.Database.EnsureDeleted();
            _orderContext.Database.EnsureDeleted();
        }
        public void When_Get_Order_Id_1_Should_Be_Return_Only_This_Order()
        {
            var _orderOptions = new DbContextOptionsBuilder <OrdersContext>().UseInMemoryDatabase("create_order_orders_detail_2").Options;
            var _orderContext = new OrdersContext(_orderOptions);

            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("create_order_carts_detail_2").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("create_order_carts_products_detail_2").Options;
            var _productContext = new ProductsContext(_productOptions);

            OrdersModel ordersModel = new OrdersModel {
                cartId         = 1,
                userId         = 1,
                subtotal       = (Decimal)25.90,
                total          = (Decimal)75.90,
                shippingMethod = "Cash on Delivery",
                shippingFee    = 50,
                fullname       = "Chonnikan Tobunrueang",
                address1       = "3 อาคารพร้อมพันธ์ 3 ห้อง 1001",
                address2       = "จอมพล",
                city           = "จตุจักร",
                province       = "กรุงเทพ",
                postcode       = "10900",
                createDatetime = DateTime.Now,
            };

            _orderContext.Orders.Add(ordersModel);

            OrderProductsModel orderProductsModel = new OrderProductsModel {
                orderId           = 1,
                productId         = 2,
                quantity          = 2,
                name              = "43 Piece dinner Set",
                price             = (Decimal)12.95,
                availability      = "InStock",
                stockAvailability = 10,
                age    = "3_to_5",
                gender = "FEMALE",
                brand  = "CoolKidz"
            };

            _orderContext.OrderProducts.Add(orderProductsModel);

            _orderContext.SaveChanges();

            OrderDetailOutput expectedResult = new OrderDetailOutput {
                order    = ordersModel,
                products = new ProductsListOutput {
                    total = 1,
                    data  = new List <OrderProductsModel>()
                    {
                        orderProductsModel
                    },
                }
            };

            OrdersService ordersService = new OrdersService(_cartContext, _productContext, _orderContext);
            var           actual        = ordersService.get(1);

            Assert.Equal(expectedResult.order.id, actual.order.id);

            using (var context = new ProductsContext(_productOptions))
            {
                _productContext.Database.EnsureDeleted();
            }
            using (var context = new CartsContext(_cartOptions))
            {
                _cartContext.Database.EnsureDeleted();
            }
            using (var context = new OrdersContext(_orderOptions))
            {
                _orderContext.Database.EnsureDeleted();
            }
        }
        public void When_Create_Order_With_Cart_Should_Be_Return_Order()
        {
            var _orderOptions = new DbContextOptionsBuilder <OrdersContext>().UseInMemoryDatabase("create_order_orders_1").Options;
            var _orderContext = new OrdersContext(_orderOptions);

            var _cartOptions = new DbContextOptionsBuilder <CartsContext>().UseInMemoryDatabase("create_order_carts_detail_1").Options;
            var _cartContext = new CartsContext(_cartOptions);

            var _productOptions = new DbContextOptionsBuilder <ProductsContext>().UseInMemoryDatabase("create_order_carts_products_detail_1").Options;
            var _productContext = new ProductsContext(_productOptions);

            ProductsModel productData = new ProductsModel {
                id                = 2,
                name              = "43 Piece dinner Set",
                price             = (Decimal)12.95,
                availability      = "InStock",
                stockAvailability = 10,
                age               = "3_to_5",
                gender            = "FEMALE",
                brand             = "CoolKidz"
            };

            _productContext.Products.Add(productData);
            _productContext.SaveChanges();

            CartsModel cartModel = new CartsModel {
                id          = 1,
                userId      = 1,
                subtotal    = (Decimal)12.95,
                shippingFee = (Decimal)50.00,
                total       = (Decimal)62.95
            };

            _cartContext.Carts.Add(cartModel);

            CartProductsModel cartProduct = new CartProductsModel {
                id        = 1,
                productId = 2,
                cartId    = 1,
                quantity  = 1,
            };

            _cartContext.CartProducts.Add(cartProduct);
            _cartContext.SaveChanges();

            OrdersService ordersService = new OrdersService(_cartContext, _productContext, _orderContext);
            var           actualResult  = ordersService.create(1, 1);

            //  CreateOrderOutputModel actualResult = new CreateOrderOutputModel{
            //     id = 1
            //  };

            Assert.Equal(2, actualResult.id);



            using (var context = new ProductsContext(_productOptions))
            {
                _productContext.Database.EnsureDeleted();
            }
            using (var context = new CartsContext(_cartOptions))
            {
                _cartContext.Database.EnsureDeleted();
            }
            using (var context = new OrdersContext(_orderOptions))
            {
                _orderContext.Database.EnsureDeleted();
            }
        }
 public OrdersService(CartsContext cartContext, ProductsContext productContext, OrdersContext orderContext)
 {
     _cartContext    = cartContext;
     _productContext = productContext;
     _orderContext   = orderContext;
 }