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); }
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); }
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); }
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); }
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); }
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; }
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; }