public async Task UpdateStausTestPositive(AccountRoles accountRole, OrderStatuses previousOrderStatus, OrderStatuses nextStatus)
        {
            //Arrange
            var owner = EntitiesCreationService.GetOwner();

            owner.HashedPassword = "******";
            var restaurant = EntitiesCreationService.GetRestaurant();

            owner.Restaurants = new List <Restaurant>()
            {
                restaurant
            };
            owner = await accountsRepository.AddAsync(owner);


            var account = EntitiesCreationService.GetOwner();

            account.HashedPassword = "******";
            account.Role           = accountRole;

            var order = EntitiesCreationService.GetOrder();

            var orderStatus = EntitiesCreationService.GetOrderStatus();

            orderStatus.Status  = previousOrderStatus;
            order.OrderStatuses = new List <OrderStatus>()
            {
                orderStatus
            };
            order.RestaurantId = owner.Restaurants[0].RestaurantId;
            account.Orders     = new List <Order>()
            {
                order
            };

            account = await accountsRepository.AddAsync(account);

            try
            {
                //Act
                await orderService.UpdateStaus(account.AccountId, account.Orders[0].EntityId, nextStatus);

                //Assert
                var statuses = ordersStatusRepository.GetAllStatusesForOrder(account.Orders[0].EntityId);
                Assert.Contains(statuses, s => s.Status == nextStatus);

                var orders = ordersRepository.GetAllOrdersForRegularUser(account.EntityId);
                Assert.Equal(orders[0].LatestOrderStatus, nextStatus);
            }
            finally
            {
                //Clear
                accountsRepository.Remove(account);
                accountsRepository.Remove(owner);
            }
        }
示例#2
0
        private bool IsNextStep(OrderStatuses newOrderStatus, int orderId)
        {
            var orderStatuses = ordersStatusRepository.GetAllStatusesForOrder(orderId);

            if (orderStatuses.Any(os => os.Status == OrderStatuses.Canceled))
            {
                return(false);
            }
            var curStatus = orderStatuses.Max(os => os.Status);

            if (curStatus == OrderStatuses.Placed)
            {
                return(newOrderStatus == OrderStatuses.Canceled || newOrderStatus == OrderStatuses.Processed);
            }
            return(curStatus + 1 == newOrderStatus);
        }
        public IActionResult GetOrderStatuses([FromQuery] int orderId)
        {
            var orderStatuses = ordersStatusRepository.GetAllStatusesForOrder(orderId);

            return(Ok(orderStatuses));
        }