private void PlaceShippingDetails(ShippingDetailsDto shippingDetailModels, int orderId)
        {
            ShippingDetails shippingDetails = new ShippingDetails();

            shippingDetails.OrderId        = orderId;
            shippingDetails.Country        = shippingDetailModels.Country;
            shippingDetails.City           = shippingDetailModels.City;
            shippingDetails.AddressLine    = shippingDetailModels.AddressLine;
            shippingDetails.CountyOrRegion = shippingDetailModels.CountyOrRegion;
            shippingDetails.PostalCode     = shippingDetailModels.PostalCode;
            shippingDetails.FirstName      = shippingDetailModels.FirstName;
            shippingDetails.LastName       = shippingDetailModels.LastName;
            shippingDetails.PhoneNumber    = shippingDetailModels.PhoneNumber;

            _context.ShippingDetailses.Add(shippingDetails);
            _context.SaveChanges();
        }
        private ShippingDetailsDto GetShippingDetailsDto(int orderId)
        {
            ShippingDetailsDto shippingDetailsDto = new ShippingDetailsDto();

            ShippingDetails shippingDetails = _context.ShippingDetailses.FirstOrDefault(n => n.OrderId == orderId);

            shippingDetailsDto.Country        = shippingDetails.Country;
            shippingDetailsDto.City           = shippingDetails.City;
            shippingDetailsDto.AddressLine    = shippingDetails.AddressLine;
            shippingDetailsDto.CountyOrRegion = shippingDetails.CountyOrRegion;
            shippingDetailsDto.PostalCode     = shippingDetails.PostalCode;
            shippingDetailsDto.FirstName      = shippingDetails.FirstName;
            shippingDetailsDto.LastName       = shippingDetails.LastName;
            shippingDetailsDto.PhoneNumber    = shippingDetails.PhoneNumber;

            return(shippingDetailsDto);
        }
        public void UpdateStatus_ShouldUpdateTheStatusOfAnOrder()
        {
            //Arange
            //Reproduce data required
            var productList = new List <Product>
            {
                new Product
                {
                    ProductId   = 1,
                    Name        = "T-shirt",
                    Description = "Rotaract personalized t-shirt",
                    ImageRef    = "Ref",
                    Inventory   = 10,
                    Price       = 8
                },
                new Product
                {
                    ProductId   = 2,
                    Name        = "Pants",
                    Description = "Rotaract personalized pants",
                    ImageRef    = "Ref",
                    Inventory   = 50,
                    Price       = 10
                }
            };

            var shippingDetails = new ShippingDetailsDto
            {
                Country        = "Denmark",
                City           = "Horsens",
                PostalCode     = 8700,
                CountyOrRegion = "Midtjylland",
                AddressLine    = "Kirkegaardvej 777",
                FirstName      = "Max",
                LastName       = "Maximovic",
                PhoneNumber    = 91123456
            };

            var orderItemDtoList = new List <OrderItemDto>
            {
                new OrderItemDto
                {
                    product  = productList[0],
                    Quantity = 5
                },
                new OrderItemDto
                {
                    product  = productList[1],
                    Quantity = 2
                }
            };

            var orderDto = new OrderDto
            {
                OrderId              = 1,
                UserId               = 10,
                OrderItems           = orderItemDtoList,
                ShippingDetailsModel = shippingDetails,
                DateStamp            = "2020-05-25",
                Status               = "CONFIRMED",
                TotalPrice           = (orderItemDtoList[0].product.Price * orderItemDtoList[0].Quantity)
                                       + (orderItemDtoList[1].product.Price * orderItemDtoList[1].Quantity)
            };

            var mockRepo = new Mock <IRotaractRepository>();

            mockRepo.Setup(d => d.UpdateStatusOfOrder(orderDto));

            //Arrange
            OrderController orderController = new OrderController(mockRepo.Object)
            {
                Request       = new System.Net.Http.HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            var orderDtoUpdated = new OrderDto
            {
                OrderId              = 1,
                UserId               = 10,
                OrderItems           = orderItemDtoList,
                ShippingDetailsModel = shippingDetails,
                DateStamp            = "2020-05-25",
                Status               = "INPROGRESS",
                TotalPrice           = (orderItemDtoList[0].product.Price * orderItemDtoList[0].Quantity)
                                       + (orderItemDtoList[1].product.Price * orderItemDtoList[1].Quantity)
            };

            //Act
            var result = orderController.UpdateStatus(orderDtoUpdated);

            //Assert
            Assert.AreEqual(HttpStatusCode.Forbidden, result.StatusCode);
        }