public void MealForTodayAddedToChildrenWhenAddedToRepository() { var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); var newMeal = new Meal( Guid.NewGuid(), new MealType( Guid.NewGuid(), "Doesn't Matter", "", DateTime.Now, false ), DateTime.Now, "Test Meal", "Just a test" ); newMeal.FoodItemServings.Add( new Serving<FoodItem>( new FoodItem( Guid.NewGuid(), "test", "", 42 ), 1 ) ); allMeals.Add( newMeal ); dataRepositoryMock.Raise( e => e.ItemAdded += null, new RepositoryObjectEventArgs( newMeal ) ); Assert.AreEqual( 4, mealNodeViewModel.Children.Count ); foreach (ClickableTreeNodeViewModel node in mealNodeViewModel.Children) { Meal meal = allMeals.Find( m => m.ID == (Guid)node.Parameter ); Assert.IsNotNull( meal ); Assert.AreEqual( meal.Name, node.Name ); } }
public void MealForOtherDayNotRemovedFromChildrenWhenRemovedFromRepository() { var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); var removedMeal = allMeals.Find( m => m.DateAndTimeOfMeal.Date == DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) && m.TypeOfMeal.Name == "Dinner" ); Assert.IsNotNull( removedMeal ); allMeals.Remove( removedMeal ); dataRepositoryMock.Raise( e => e.ItemDeleted += null, new RepositoryObjectEventArgs( removedMeal ) ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); foreach (ClickableTreeNodeViewModel node in mealNodeViewModel.Children) { var meal = allMeals.Find( m => m.ID == (Guid)node.Parameter ); Assert.IsNotNull( meal ); Assert.AreEqual( meal.Name, node.Name ); } }
public void CaloriesLoadCorrectlyForExistingMeal() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); Assert.AreEqual( meal.Calories, viewModel.Calories ); }
public void CaloriesAdjustedAsFoodItemsAdded() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); Assert.AreEqual( meal.Calories, viewModel.Calories ); viewModel.FoodItemServings.Add( new ServingViewModel<FoodItem>( new FoodItem( Guid.NewGuid(), "Test", "", 42.5M ), 3 ) ); Assert.AreEqual( meal.Calories + 127.5M, viewModel.Calories ); }
public void CaloriesAdjustedAsFoodItemsRemoved() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); Assert.AreEqual( meal.Calories, viewModel.Calories ); var foodItem = viewModel.FoodItemServings[0]; var foodItemCalories = foodItem.Entity.CaloriesPerServing * foodItem.Quantity; viewModel.FoodItemServings.RemoveAt( 0 ); Assert.AreEqual( meal.Calories - foodItemCalories, viewModel.Calories ); }
public void NameLoadsCorrectlyForExistingMeal() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( meal ); Assert.AreEqual( meal.Name, viewModel.Name ); }
public void LoadedMealIsNotUsed() { var mockData = new MockData(); var viewModel = CreateViewModelForMeal( mockData.Meals().Find( x => x.ID == MockData.DayOneLunchID ) ); Assert.IsFalse( viewModel.IsUsed ); }
public void MealNodeModifiedIfMealModified() { PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler(); var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); var modifiedMeal = allMeals.Find( m => m.DateAndTimeOfMeal.Date == DateTime.Today && m.TypeOfMeal.Name == "Dinner" ); Assert.IsNotNull( modifiedMeal ); String originalName = modifiedMeal.Name; ClickableTreeNodeViewModel mealInTree = null; foreach (ClickableTreeNodeViewModel child in mealNodeViewModel.Children) { child.PropertyChanged += propertyChangedHandler.OnPropertyChanged; if ((Guid)child.Parameter == modifiedMeal.ID) { mealInTree = child; } } Assert.IsNotNull( mealInTree ); Assert.AreEqual( originalName, mealInTree.Name ); modifiedMeal.Name += "Modified"; dataRepositoryMock.Raise( e => e.ItemModified += null, new RepositoryObjectEventArgs( modifiedMeal ) ); Assert.AreEqual( originalName + "Modified", mealInTree.Name ); Assert.AreEqual( 1, propertyChangedHandler.PropertiesChanged.Count ); Assert.AreEqual( mealInTree, propertyChangedHandler.Sender ); Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "Name" ) ); }
public void ModifyingMealNotOnDateDoesNotUpdateCaloriesAndFoodGroups() { PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler(); var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); var todaysMeals = (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ) .Returns( new ReadOnlyCollection<Meal>( todaysMeals ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today; viewModel.PropertyChanged += propertyChangedHandler.OnPropertyChanged; Decimal originalFoodGroupServings = (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum(); Decimal originalCalories = viewModel.Calories; var mealToModify = new Meal( fullMealList.Find( x => x.TypeOfMeal.Name == "Breakfast" && x.DateAndTimeOfMeal.Date != DateTime.Today ) ); Assert.IsNotNull( mealToModify ); mealToModify.FoodItemServings.Remove( mealToModify.FoodItemServings.Find( x => x.Entity.Name == "Orange Juice" ) ); dataRepositoryMock.Raise( x => x.ItemModified += null, new RepositoryObjectEventArgs( mealToModify ) ); Assert.AreEqual( originalFoodGroupServings, (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum() ); Assert.AreEqual( originalCalories, viewModel.Calories ); Assert.AreEqual( 0, propertyChangedHandler.PropertiesChanged.Count ); }
public void AddingMealForDateToRepositoryUpdatesCaloriesAndFoodGroups() { PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler(); var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); var todaysMeals = (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ).Returns( new ReadOnlyCollection<Meal>( todaysMeals ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today; viewModel.PropertyChanged += propertyChangedHandler.OnPropertyChanged; Int32 originalFoodGroupCount = viewModel.FoodGroupServings.Count; Decimal originalFoodGroupServings = (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum(); Decimal originalCalories = viewModel.Calories; var foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 5, foodGroupServings.Count ); var serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 5.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.75M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 3.5M, serving.Quantity ); var foodItem = new FoodItem( Guid.NewGuid(), "test", "", 42 ); foodItem.FoodGroupsPerServing.Add( new Serving<FoodGroup>( new FoodGroup( Guid.NewGuid(), "Test1", "" ), 2 ) ); foodItem.FoodGroupsPerServing.Add( new Serving<FoodGroup>( new FoodGroup( Guid.NewGuid(), "Test2", "" ), 1 ) ); var newMeal = new Meal( Guid.NewGuid(), new MealType( Guid.NewGuid(), "Doesn't Matter", "", DateTime.Now, false ), DateTime.Now, "Test Meal", "Just a test" ); newMeal.FoodItemServings.Add( new Serving<FoodItem>( foodItem, 1 ) ); todaysMeals.Add( newMeal ); dataRepositoryMock.Raise( e => e.ItemAdded += null, new RepositoryObjectEventArgs( newMeal ) ); Assert.AreEqual( originalCalories + 42, viewModel.Calories ); Assert.AreEqual( originalFoodGroupCount + 2, viewModel.FoodGroupServings.Count ); Assert.AreEqual( originalFoodGroupServings + 3, (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum() ); foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 7, foodGroupServings.Count ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 5.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.75M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 3.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Test1" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Test2" ); Assert.IsNotNull( serving ); Assert.AreEqual( 1, serving.Quantity ); Assert.AreEqual( 2, propertyChangedHandler.PropertiesChanged.Count ); Assert.AreEqual( viewModel, propertyChangedHandler.Sender ); Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "Calories" ) ); Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "FoodGroupServings" ) ); }
public void DailyLogNodesReflectCurrentDate() { var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var data = new MockData(); var fullMealList = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ) .Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) ) ) .Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); Assert.AreEqual( 3, viewModel.DailyLogNodes[0].Children.Count ); viewModel.CurrentDate = viewModel.CurrentDate.AddDays( MockData.DaysToAddForFutureMeals ); Assert.AreEqual( 2, viewModel.DailyLogNodes[0].Children.Count ); }
public void AddingMealForOtherDateToRepositoryDoesNotUpdateCaloriesAndFoodGroups() { PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler(); var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); var todaysMeals = (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ).Returns( new ReadOnlyCollection<Meal>( todaysMeals ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today; viewModel.PropertyChanged += propertyChangedHandler.OnPropertyChanged; Int32 originalFoodGroupCount = viewModel.FoodGroupServings.Count; Decimal originalFoodGroupServings = (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum(); Decimal originalCalories = viewModel.Calories; var foodItem = new FoodItem( Guid.NewGuid(), "test", "", 42 ); foodItem.FoodGroupsPerServing.Add( new Serving<FoodGroup>( new FoodGroup( Guid.NewGuid(), "Test1", "" ), 2 ) ); foodItem.FoodGroupsPerServing.Add( new Serving<FoodGroup>( new FoodGroup( Guid.NewGuid(), "Test2", "" ), 1 ) ); var newMeal = new Meal( Guid.NewGuid(), new MealType( Guid.NewGuid(), "Doesn't Matter", "", DateTime.Now, false ), DateTime.Now.AddDays( 1 ), "Test Meal", "Just a test" ); newMeal.FoodItemServings.Add( new Serving<FoodItem>( foodItem, 1 ) ); dataRepositoryMock.Raise( e => e.ItemAdded += null, new RepositoryObjectEventArgs( newMeal ) ); Assert.AreEqual( originalCalories, viewModel.Calories ); Assert.AreEqual( originalFoodGroupCount, viewModel.FoodGroupServings.Count ); Assert.AreEqual( originalFoodGroupServings, (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum() ); Assert.AreEqual( 0, propertyChangedHandler.PropertiesChanged.Count ); }
public void TitleIsNameForExistingMeal() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayOneLunchID ); var viewModel = CreateViewModelForMeal( meal ); Assert.AreEqual( meal.Name, viewModel.Title ); }
public void TitleForExistingMealDoesNotChangeUntilMealSaved() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayOneLunchID ); var origMealName = meal.Name; var viewModel = CreateViewModelForMeal( meal ); viewModel.Name += "Test"; Assert.AreEqual( origMealName + "Test", viewModel.Name ); Assert.AreEqual( origMealName, viewModel.Title ); Assert.IsTrue( viewModel.SaveCommand.CanExecute( null ) ); viewModel.SaveCommand.Execute( null ); Assert.AreEqual( origMealName + "Test", viewModel.Title ); }
public void NonMealNotAddedToChildrenWhenAddedToRepository() { var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); var mealType = new MealType( Guid.NewGuid(), "A New Meal Type", "This should not already exist", DateTime.Now, false ); Assert.IsTrue( mealType.IsValid ); dataRepositoryMock.Raise( e => e.ItemAdded += null, new RepositoryObjectEventArgs( mealType ) ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); foreach (ClickableTreeNodeViewModel node in mealNodeViewModel.Children) { Meal meal = allMeals.Find( m => m.ID == (Guid)node.Parameter ); Assert.IsNotNull( meal ); Assert.AreEqual( meal.Name, node.Name ); } }
public void MealNodeViewModelDefault() { var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( DisplayStrings.DailyLogMealTitle, mealNodeViewModel.Name ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); foreach (ClickableTreeNodeViewModel node in mealNodeViewModel.Children) { Meal meal = allMeals.Find( m => m.ID == (Guid)node.Parameter ); Assert.IsNotNull( meal ); Assert.AreEqual( meal.Name, node.Name ); } }
public void TimeAndDateOfMealLoadsCorrectlyForExistingMeal() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); Assert.AreEqual( meal.DateAndTimeOfMeal, viewModel.TimeOfMeal ); Assert.AreEqual( meal.DateAndTimeOfMeal.Date, viewModel.DateOfMeal ); }
public void ExistingMealIsDirtyAfterChange() { var data = new MockData(); var viewModel = CreateViewModelForMeal( data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ) ); viewModel.Description += "Mod"; Assert.IsTrue( viewModel.IsDirty ); }
public void CaloriesAreCalculatedBasedOnSelectedDay() { var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ); Assert.AreEqual( 1425.5M, viewModel.Calories ); viewModel.CurrentDate = DateTime.Today; Assert.AreEqual( 2357.5M, viewModel.Calories ); dataRepositoryMock.VerifyAll(); }
public void ExistingMealIsNotDirty() { var data = new MockData(); var viewModel = CreateViewModelForMeal( data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ) ); Assert.IsFalse( viewModel.IsDirty ); }
public void DateDefaultsToToday() { var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var data = new MockData(); var fullMealList = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ) .Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList() ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); Assert.AreEqual( DateTime.Now.Date, viewModel.CurrentDate ); }
public void FoodGroupServingsAdjustedAsFoodItemsAdded() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); var foodItem = new FoodItem( Guid.NewGuid(), "Test Food Item", "", 1 ); foodItem.FoodGroupsPerServing.Add( new Serving<FoodGroup>( new FoodGroup( Guid.NewGuid(), "Test Food Group", "" ), 1 ) ); viewModel.FoodItemServings.Add( new ServingViewModel<FoodItem>( foodItem, 2 ) ); Assert.AreEqual( meal.FoodGroupServings.Count + 1, viewModel.FoodGroupServings.Count ); }
public void FoodGroupsAreCalculatedBasedOnSelectedDay() { var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today; var foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 5, foodGroupServings.Count ); var serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 5.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.75M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 3.5M, serving.Quantity ); viewModel.CurrentDate = DateTime.Today.AddDays( MockData.DaysToAddForFutureMeals ); foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 5, foodGroupServings.Count ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 1.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.0M, serving.Quantity ); dataRepositoryMock.VerifyAll(); }
public void FoodItemServingsLoadsCorrectForExistingMeal() { var data = new MockData(); var meal = data.Meals().Find( x => x.ID == MockData.DayTwoBreakfastID ); var viewModel = CreateViewModelForMeal( new Meal( meal ) ); Assert.AreEqual( meal.FoodItemServings.Count, viewModel.FoodItemServings.Count ); foreach (var foodItem in viewModel.FoodItemServings) { var mealFoodItem = meal.FoodItemServings.Find( x => x.Entity.ID == foodItem.Entity.ID ); Assert.IsNotNull( mealFoodItem ); Assert.AreEqual( mealFoodItem.Quantity, foodItem.Quantity ); } }
public void ModifyingMealOnDateUpdatesCaloriesAndFoodGroups() { PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler(); var loggerMock = new Mock<ILoggerFacade>(); var dataRepositoryMock = new Mock<IDataRepository>(); var regionManagerMock = new Mock<IRegionManager>(); var interactionServiceMock = new Mock<IInteractionService>(); var navigationServiceMock = new Mock<IRegionNavigationService>(); var data = new MockData(); var fullMealList = data.Meals(); var todaysMeals = (from meal in fullMealList where meal.DateAndTimeOfMeal.Date == DateTime.Today select meal).ToList(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today ) ) .Returns( new ReadOnlyCollection<Meal>( todaysMeals ) ); var viewModel = new DailyLogViewModel( dataRepositoryMock.Object, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object ); viewModel.CurrentDate = DateTime.Today; viewModel.PropertyChanged += propertyChangedHandler.OnPropertyChanged; Decimal originalFoodGroupServings = (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum(); Decimal originalCalories = viewModel.Calories; var foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 5, foodGroupServings.Count ); var serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 5.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.75M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 3.5M, serving.Quantity ); var mealToModify = todaysMeals.Find( x => x.TypeOfMeal.Name == "Breakfast" ); Assert.IsNotNull( mealToModify ); mealToModify.FoodItemServings.Remove( mealToModify.FoodItemServings.Find( x => x.Entity.Name == "Orange Juice" ) ); dataRepositoryMock.Raise( x => x.ItemModified += null, new RepositoryObjectEventArgs( mealToModify ) ); Assert.AreEqual( originalFoodGroupServings - 2.5M, (from foodGroupServing in viewModel.FoodGroupServings select foodGroupServing.Quantity).Sum() ); Assert.AreEqual( originalCalories - 250, viewModel.Calories ); foodGroupServings = viewModel.FoodGroupServings; Assert.AreEqual( 4, foodGroupServings.Count ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Fruit" ); Assert.IsNull( serving ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Starch" ); Assert.IsNotNull( serving ); Assert.AreEqual( 5.0M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Dairy" ); Assert.IsNotNull( serving ); Assert.AreEqual( 4.75M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Meat" ); Assert.IsNotNull( serving ); Assert.AreEqual( 2.5M, serving.Quantity ); serving = foodGroupServings.ToList().Find( x => x.Entity.Name == "Vegetable" ); Assert.IsNotNull( serving ); Assert.AreEqual( 3.5M, serving.Quantity ); Assert.AreEqual( 2, propertyChangedHandler.PropertiesChanged.Count ); Assert.AreEqual( viewModel, propertyChangedHandler.Sender ); Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "Calories" ) ); Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "FoodGroupServings" ) ); }
public void MealListMatchesMealsForDay() { var dataRepositoryMock = new Mock<IDataRepository>(); var data = new MockData(); var allMeals = data.Meals(); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Today.AddDays( 1 ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( 1 ) select meal).ToList() ) ); dataRepositoryMock.Setup( x => x.GetAllMealsForDate( DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) ) ).Returns( new ReadOnlyCollection<Meal>( (from meal in allMeals where meal.DateAndTimeOfMeal.Date == DateTime.Now.Date.AddDays( MockData.DaysToAddForFutureMeals ) select meal).ToList() ) ); var mealNodeViewModel = new MealNodeViewModel( dataRepositoryMock.Object, null ); Assert.AreEqual( DateTime.Today, mealNodeViewModel.CurrentDate ); Assert.AreEqual( 3, mealNodeViewModel.Children.Count ); mealNodeViewModel.CurrentDate = mealNodeViewModel.CurrentDate.AddDays( 1 ); Assert.AreEqual( 0, mealNodeViewModel.Children.Count ); mealNodeViewModel.CurrentDate = mealNodeViewModel.CurrentDate.AddDays( 2 ); Assert.AreEqual( 2, mealNodeViewModel.Children.Count ); }