예제 #1
0
        public void TestSplitDishesWithSuccess()
        {
            using (var context = _serviceProvider.GetService <RestaurantOrderContext>())
            {
                var repo    = new ClientOrderHistoryRepository(context);
                var service = new RestaurantOrderAppService(repo, _mapper);

                var inputOrderDto = new InputOrderDto();
                inputOrderDto.ClientOrderInput = "morning, 1, 2, 3, 3, 3";

                var expectedResponse   = new OrderSplitedDto();
                var expectedListDishes = new List <string>();
                expectedListDishes.Add(" 1");
                expectedListDishes.Add(" 2");
                expectedListDishes.Add(" 3");
                expectedListDishes.Add(" 3");
                expectedListDishes.Add(" 3");

                expectedResponse.DayPeriod  = DayPeriodEnum.morning;
                expectedResponse.DishesList = expectedListDishes;

                var response = service.SeparatePeriodFromDishes(inputOrderDto);

                Assert.Equal(expectedListDishes, response.DishesList);
            }
        }
예제 #2
0
        public OrderSplitedDto SeparatePeriodFromDishes(InputOrderDto inputOrderDto)
        {
            var           orderInfoDto    = new OrderSplitedDto();
            List <string> stringParts     = inputOrderDto.ClientOrderInput.Split(',').ToList();
            var           dayPeriodString = stringParts.FirstOrDefault().ToLower();

            Enum.TryParse(dayPeriodString, out DayPeriodEnum dayPeriodEnum);

            if (dayPeriodEnum != DayPeriodEnum.morning && dayPeriodEnum != DayPeriodEnum.night)
            {
                return(null);
            }

            orderInfoDto.DayPeriod = dayPeriodEnum;
            stringParts.RemoveAt(0);

            if (stringParts != null && stringParts.Count() != 0 && stringParts.FirstOrDefault().Trim() != "")
            {
                orderInfoDto.DishesList = stringParts;
            }
            else
            {
                return(null);
            }

            return(orderInfoDto);
        }
예제 #3
0
        public void TestCreateOrderOutputWithError()
        {
            using (var context = _serviceProvider.GetService <RestaurantOrderContext>())
            {
                var repo    = new ClientOrderHistoryRepository(context);
                var service = new RestaurantOrderAppService(repo, _mapper);
                var input   = "night, 1, 1";

                var orderSplitedDto = new OrderSplitedDto();
                var listDishes      = new List <string>();
                listDishes.Add("1");
                listDishes.Add("1");
                orderSplitedDto.DayPeriod  = DayPeriodEnum.night;
                orderSplitedDto.DishesList = listDishes;

                var response = service.CreateOrderOutput(orderSplitedDto, input);

                Assert.Equal("steak, error", response.ClientOrderOutput);
            }
        }
예제 #4
0
        public ClientOrderHistoryDto CreateOrderOutput(OrderSplitedDto orderInfoDto, string clientOrderInput)
        {
            var clientOrderHistoryDto = new ClientOrderHistoryDto();

            clientOrderHistoryDto.ClientOrderInput = clientOrderInput;

            if (orderInfoDto.DayPeriod == DayPeriodEnum.morning)
            {
                clientOrderHistoryDto.ClientOrderOutput = CreateMorningDishesFromInput(orderInfoDto.DishesList);
                return(clientOrderHistoryDto);
            }
            else if (orderInfoDto.DayPeriod == DayPeriodEnum.night)
            {
                clientOrderHistoryDto.ClientOrderOutput = CreateNightDishesFromInput(orderInfoDto.DishesList);
                return(clientOrderHistoryDto);
            }
            else
            {
                clientOrderHistoryDto.ClientOrderOutput = "error";
                return(clientOrderHistoryDto);
            }
        }