public void MealTemplateAddedToChildrenWhenAddedToRepository()
        {
            var configurationMock = new Mock<IConfiguration>();

             configurationMock.Setup( x => x.FileName ).Returns( FullTestData.DataFileName );
             configurationMock.Setup( x => x.DataSource ).Returns( DataSourceType.XMLFile );

             FullTestData.Reset();
             DataRepository dataRepository = new DataRepository( configurationMock.Object );

             MealTemplateNodeViewModel mealTemplateNodeViewModel = new MealTemplateNodeViewModel( dataRepository, null );

             Int32 originalChildCount = mealTemplateNodeViewModel.Children.Count;

             MealTemplate newMealTemplate = new MealTemplate(
            Guid.NewGuid(), dataRepository.GetAllMealTypes()[0], DateTime.Now, "Test Meal Template", "Just a test" );
             newMealTemplate.FoodItemServings.Add( new Serving<FoodItem>( dataRepository.GetAllFoodItems()[0], 1 ) );
             dataRepository.SaveItem( newMealTemplate );
             Assert.AreEqual( originalChildCount + 1, mealTemplateNodeViewModel.Children.Count );

             foreach (ClickableTreeNodeViewModel node in mealTemplateNodeViewModel.Children)
             {
            MealTemplate mealTemplate = dataRepository.GetMealTemplate( (Guid)node.Parameter );
            Assert.IsNotNull( mealTemplate );
            Assert.AreEqual( mealTemplate.Name, node.Name );
             }
        }
        public void MealTypeNodeVewModelModifyMealType()
        {
            var configurationMock = new Mock<IConfiguration>();
             configurationMock.Setup( x => x.DataSource ).Returns( DataSourceType.XMLFile );
             configurationMock.Setup( x => x.FileName ).Returns( FullTestData.DataFileName );

             FullTestData.Reset();
             DataRepository dataRepository = new DataRepository( configurationMock.Object );

             PropertyChangedHandler propertyChangedHandler = new PropertyChangedHandler();

             MealTypeNodeViewModel mealTypeNodeViewModel = new MealTypeNodeViewModel( dataRepository, null );
             Int32 originalChildCount = mealTypeNodeViewModel.Children.Count;

             MealType mealType = dataRepository.GetAllMealTypes().ElementAt( 0 );
             String originalName = mealType.Name;

             ClickableTreeNodeViewModel mealTypeInTree = null;
             foreach (ClickableTreeNodeViewModel child in mealTypeNodeViewModel.Children)
             {
            child.PropertyChanged += propertyChangedHandler.OnPropertyChanged;
            if ((Guid)child.Parameter == mealType.ID)
            {
               mealTypeInTree = child;
            }
             }

             Assert.IsNotNull( mealTypeInTree );
             Assert.AreEqual( originalName, mealTypeInTree.Name );

             mealType.Name += "Modified";
             dataRepository.SaveItem( mealType );

             Assert.AreEqual( originalName + "Modified", mealTypeInTree.Name );
             Assert.AreEqual( 1, propertyChangedHandler.PropertiesChanged.Count );
             Assert.AreEqual( mealTypeInTree, propertyChangedHandler.Sender );
             Assert.IsTrue( propertyChangedHandler.PropertiesChanged.Contains( "Name" ) );
        }
        public void MealTypeNodeViewModelDefault()
        {
            var configurationMock = new Mock<IConfiguration>();
             configurationMock.Setup( x => x.DataSource ).Returns( DataSourceType.XMLFile );
             configurationMock.Setup( x => x.FileName ).Returns( FullTestData.DataFileName );

             FullTestData.Reset();
             DataRepository dataRepository = new DataRepository( configurationMock.Object );

             MealTypeNodeViewModel mealTypeNodeViewModel = new MealTypeNodeViewModel( dataRepository, null );

             Assert.AreEqual( DisplayStrings.AdminMealTypesTitle, mealTypeNodeViewModel.Name );

             // If the counts are the same, the parameter is set to the ID, and every child is in the repository,
             // then the data should be fine.
             Assert.AreEqual( dataRepository.GetAllMealTypes().Count, mealTypeNodeViewModel.Children.Count );
             foreach (ClickableTreeNodeViewModel node in mealTypeNodeViewModel.Children)
             {
            MealType mealType = dataRepository.GetMealType( (Guid)node.Parameter );
            Assert.IsNotNull( mealType );
            Assert.AreEqual( mealType.Name, node.Name );
             }
        }
        public void MealTypeNodeViewModelRemoveMealType()
        {
            var configurationMock = new Mock<IConfiguration>();
             configurationMock.Setup( x => x.DataSource ).Returns( DataSourceType.XMLFile );
             configurationMock.Setup( x => x.FileName ).Returns( FullTestData.DataFileName );

             FullTestData.Reset();
             DataRepository dataRepository = new DataRepository( configurationMock.Object );

             MealTypeNodeViewModel mealTypeNodeViewModel = new MealTypeNodeViewModel( dataRepository, null );

             Int32 originalChildCount = mealTypeNodeViewModel.Children.Count;

             MealType removedMealType = dataRepository.GetAllMealTypes().ElementAt( 0 );
             dataRepository.Remove( removedMealType );
             Assert.AreEqual( originalChildCount - 1, mealTypeNodeViewModel.Children.Count );

             foreach (ClickableTreeNodeViewModel node in mealTypeNodeViewModel.Children)
             {
            MealType mealType = dataRepository.GetMealType( (Guid)node.Parameter );
            Assert.IsNotNull( mealType );
            Assert.AreEqual( mealType.Name, node.Name );
             }
        }
        public void MealTemplateViewModelTitle()
        {
            var loggerMock = new Mock<ILoggerFacade>();
             var regionNavigationServiceMock = new Mock<IRegionNavigationService>();
             var regionManagerMock = new Mock<IRegionManager>();
             var interactionServiceMock = new Mock<IInteractionService>();

             var configurationMock = new Mock<IConfiguration>();
             configurationMock.Setup( x => x.DataSource ).Returns( DataSourceType.XMLFile );
             configurationMock.Setup( x => x.FileName ).Returns( FullTestData.DataFileName );

             FullTestData.Reset();
             DataRepository dataRepository = new DataRepository( configurationMock.Object );

             // NOTE: The title being assigned properly out of construction is actually tested via the constructor tests.
             //       This test just ensure the title changes after a save, but not before.
             MealTemplateViewModel mealTemplateViewModel =
            new MealTemplateViewModel( dataRepository, regionManagerMock.Object, interactionServiceMock.Object, loggerMock.Object );
             NavigationContext navigationContext = new NavigationContext( regionNavigationServiceMock.Object, new Uri( "MealTemplateView", UriKind.Relative ) );
             mealTemplateViewModel.OnNavigatedTo( navigationContext );

             Assert.AreEqual( DisplayStrings.NewMealTemplateTitle, mealTemplateViewModel.Title );
             mealTemplateViewModel.Name = "Test the Title";
             mealTemplateViewModel.Description = "This is just to test the title";
             mealTemplateViewModel.TimeOfMeal = DateTime.Now;
             mealTemplateViewModel.TypeOfMeal = dataRepository.GetAllMealTypes()[0];
             mealTemplateViewModel.FoodItemServings.Add( new ServingViewModel<FoodItem>( dataRepository.GetAllFoodItems()[0], 1 ) );
             Assert.AreEqual( DisplayStrings.NewMealTemplateTitle, mealTemplateViewModel.Title );
             Assert.IsTrue( mealTemplateViewModel.SaveCommand.CanExecute( null ) );
             mealTemplateViewModel.SaveCommand.Execute( null );
             Assert.AreEqual( "Test the Title", mealTemplateViewModel.Title );
        }