public async void TestApiPostForOrder()
        {
            ModelAddToCart model = new ModelAddToCart();

            model.InventoryId = 2;
            model.Numdays     = 5;
            model.Token       = token;

            //add to cart
            ApiInventoryController inventoryController = new ApiInventoryController(null);
            var jsonResult = await inventoryController.Post(model);

            Assert.NotNull(jsonResult);
            Assert.True(jsonResult.Success);

            //submit the order
            var submitted = controller.SubmitOrder();

            Assert.NotNull(submitted);

            //check order
            var             mockOrderRepository    = new Mock <IApiOrderRepository>();
            var             mockLogger             = new Mock <ILogger <OrderController> >();
            var             mockCustomerRepository = new Mock <IApiCustomerRepository>();
            OrderController orderController        = new OrderController(null, mockLogger.Object, mockOrderRepository.Object, mockCustomerRepository.Object, memoryCache);

            var result = await orderController.Order(token) as ViewResult;

            var viewResult  = Assert.IsType <ViewResult>(result);
            var modelResult = Assert.IsAssignableFrom <ViewResult>(viewResult);

            Assert.NotNull(modelResult);
        }
예제 #2
0
        public async void TestApiPostInventory()
        {
            ModelAddToCart model = new ModelAddToCart();

            model.InventoryId = 1;
            model.Numdays     = 3;
            model.Token       = token;

            var jsonResult = await controller.Post(model);

            Assert.NotNull(jsonResult);
            Assert.Equal("", jsonResult.Message);
            Assert.True(jsonResult.Success);

            var result = await controller.Get(token);

            Assert.NotNull(result);
            Assert.Equal(5, result.Item1.Count);
            Assert.Equal(1, result.Item2);
        }
        public async Task <ModelApiResponse> Post([FromBody] ModelAddToCart param)
        {
            ModelApiResponse modelApiResponse = new ModelApiResponse();

            try
            {
                using (var context = new ApplicationDbContext())
                {
                    if (param != null)
                    {
                        if (param.InventoryId != 0)
                        {
                            //if product has been already found in cart
                            var dataUnique = await(from a in context.BondoraCart
                                                   where a.InventoryId == param.InventoryId && a.Token == param.Token
                                                   select a).FirstOrDefaultAsync();
                            if (dataUnique == null)
                            {
                                //insert new one
                                var newItem = new BondoraCart();
                                newItem.Days                 = param.Numdays;
                                newItem.InventoryId          = param.InventoryId;
                                newItem.Token                = param.Token;
                                context.Entry(newItem).State = EntityState.Added;
                                await context.SaveChangesAsync();
                            }
                            else
                            {
                                dataUnique.Days += param.Numdays;
                                context.Entry(dataUnique).State = EntityState.Modified;
                                await context.SaveChangesAsync();
                            }

                            var countOrdered = await(from a in context.BondoraCart
                                                     where a.Token == param.Token
                                                     select a).CountAsync();

                            modelApiResponse.Success      = true;
                            modelApiResponse.Message      = (localizer != null) ? localizer["AddedToCard"].Value : "";
                            modelApiResponse.CountOrdered = countOrdered;
                        }
                        else
                        {
                            modelApiResponse.Success = false;
                            modelApiResponse.Message = localizer["AddedToCard"].Value;
                        }
                    }
                    else
                    {
                        modelApiResponse.Success = false;
                        modelApiResponse.Message = localizer["NoItemsToSubmit"].Value;
                    }
                }
            }
            catch (Exception ex)
            {
                modelApiResponse.Success = false;
                modelApiResponse.Message = ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace;
            }
            return(modelApiResponse);
        }