public async void DoesValidatorAllowCorrectRequestWithoutMealPercentages()
        {
            var query     = new GenerateRandomMenu(1000, 2);
            var validator = new GenerateRandomMenuValidator();

            var result = await validator.ValidateAsync(query);

            result.IsValid.Should().BeTrue();
        }
        public async void DoesValidatorPreventFromGeneratingMenuWhenMealPercentageDoesNotSumpUpTo100()
        {
            var query     = new GenerateRandomMenu(1000, 2, 20, 30, 30, 5);
            var validator = new GenerateRandomMenuValidator();

            var result = await validator.ValidateAsync(query);

            result.IsValid.Should().BeFalse();
        }
        public async void DoesValidatorPreventFromGeneratingMenuWithInvalidRatioBetweenMealsAmountAndCaloriesAmount()
        {
            var query     = new GenerateRandomMenu(8000, 2);
            var validator = new GenerateRandomMenuValidator();

            var result = await validator.ValidateAsync(query);

            result.IsValid.Should().BeFalse();
        }
        public async void DoesValidatorPreventFromGeneratingMenuWithInvalidAmountOfCalories()
        {
            var query     = new GenerateRandomMenu(-1, 4);
            var validator = new GenerateRandomMenuValidator();

            var result = await validator.ValidateAsync(query);

            result.IsValid.Should().BeFalse();
        }
        public async void ShouldGenerateRandomMenuCorrectly()
        {
            var query   = new GenerateRandomMenu(2750, 3);
            var handler = new GenerateRandomMenuHandler(MockBuilder.BuildFakeMenuGenerator());

            var result = await handler.Handle(query, CancellationToken.None);

            var plan = new MealPlan(3, 2750, 0.275, 0.325, 0.40, 0);

            plan.MealPlanRows[0].Recipe   = MockData.SampleBreakfast;
            plan.MealPlanRows[0].Calories = MockData.SampleBreakfast.Calories;
            plan.MealPlanRows[1].Recipe   = MockData.SampleLunch;
            plan.MealPlanRows[1].Calories = MockData.SampleLunch.Calories;
            plan.MealPlanRows[2].Recipe   = MockData.SampleDinner;
            plan.MealPlanRows[2].Calories = MockData.SampleDinner.Calories;

            result.Should().BeEquivalentTo(plan);
        }
Ejemplo n.º 6
0
        public static MealPlan Map(GenerateRandomMenu request)
        {
            if (request.BreakfastPercentage != 0 || request.LunchPercentage != 0 || request.DinnerPercentage != 0 ||
                request.SnackPercentage != 0)
            {
                return(new MealPlan(request.MealsAmount, request.CaloriesTarget,
                                    Convert.ToDouble(request.BreakfastPercentage) / 100,
                                    Convert.ToDouble(request.LunchPercentage) / 100,
                                    Convert.ToDouble(request.DinnerPercentage) / 100,
                                    Convert.ToDouble(request.SnackPercentage) / 100));
            }

            var snack = 0.1375 / (1 + 0.1375 * (request.MealsAmount - 3));

            return(request.MealsAmount switch
            {
                2 => new MealPlan(request.MealsAmount, request.CaloriesTarget, 0.4, 0, 0.6, 0),
                3 => new MealPlan(request.MealsAmount, request.CaloriesTarget, 0.275, 0.325, 0.40, 0),
                _ => new MealPlan(request.MealsAmount, request.CaloriesTarget,
                                  0.275 * (1 - snack * (request.MealsAmount - 3)),
                                  0.325 * (1 - snack * (request.MealsAmount - 3)),
                                  0.4 * (1 - snack * (request.MealsAmount - 3)),
                                  snack)
            });