public void AllMealTypesViewModelContainsAllTypes()
        {
            var data = new MockData();
             var dataRespositoryMock = CreateMockDataRepository( data.MealTypes() );

             var viewModel = new AllMealTypesViewModel( dataRespositoryMock.Object );

             AssertViewModelContents( viewModel, data.MealTypes() );
             dataRespositoryMock.VerifyAll();
        }
        private void AssertViewModelContents( AllMealTypesViewModel viewModel, List<MealType> mealTypes )
        {
            Assert.AreEqual( mealTypes.Count, viewModel.Items.Count );

             foreach (var mealType in viewModel.Items)
             {
            var mealTypeFromRepository = mealTypes.Find( mt => mt.ID == mealType.ID );

            Assert.IsNotNull( mealType );
            Assert.AreEqual( mealTypeFromRepository.Name, mealType.Name );
             }
        }
        public void MealTypeRemovedFromViewModelWhenRemovedFromRepository()
        {
            var data = new MockData();
             var dataRespositoryMock = CreateMockDataRepository( data.MealTypes() );

             var viewModel = new AllMealTypesViewModel( dataRespositoryMock.Object );
             var mealType = data.MealTypes().Find( mt => mt.ID == MockData.lunchID );
             data.MealTypes().Remove( mealType );
             dataRespositoryMock.Raise( e => e.ItemDeleted += null, new RepositoryObjectEventArgs( mealType ) );

             AssertViewModelContents( viewModel, data.MealTypes() );
        }
        public void MealTypeModifiedInViewModelWhenChangedInRepository()
        {
            var data = new MockData();
             var dataRespositoryMock = CreateMockDataRepository( data.MealTypes() );
             var viewModel = new AllMealTypesViewModel( dataRespositoryMock.Object );

             var mealType = data.MealTypes().Find( mt => mt.ID == MockData.lunchID );
             mealType.Name += " Unit Test";
             dataRespositoryMock.Raise( e => e.ItemModified += null, new RepositoryObjectEventArgs( mealType ) );

             AssertViewModelContents( viewModel, data.MealTypes() );
        }
        public void MealTypeAddedToViewModelWhenAddedToRepository()
        {
            var data = new MockData();
             var dataRespositoryMock = CreateMockDataRepository( data.MealTypes() );

             var viewModel = new AllMealTypesViewModel( dataRespositoryMock.Object );
             var mealType = new MealType( Guid.NewGuid(), "New Type", "For a unit test", DateTime.Now, false );
             data.MealTypes().Add( mealType );
             dataRespositoryMock.Raise( e => e.ItemAdded += null, new RepositoryObjectEventArgs( mealType ) );

             AssertViewModelContents( viewModel, data.MealTypes() );
        }
        public MealViewModelBase( IDataRepository dataRepository, IRegionManager regionManager, IInteractionService interactionService, ILoggerFacade logger )
            : base(dataRepository, regionManager, interactionService, logger)
        {
            _foodGroupServings = new ObservableCollection<ServingViewModel<FoodGroup>>();
             FoodGroupServings = new ReadOnlyObservableCollection<ServingViewModel<FoodGroup>>( _foodGroupServings );

             FoodItemServings = new ObservableCollection<ServingViewModel<FoodItem>>();

             ValidFoodItems = new AllFoodItemsViewModel( dataRepository );
             ValidMealTypes = new AllMealTypesViewModel( dataRepository );

             _timeSetManually = false;
        }