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); }
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) });