public void Delete()
 {
     var sut = new MealItemEditingViewModel();
     var needToDelete = false;
     sut.StateProvider = stateProvider;
     sut.NeedToDelete += delegate { needToDelete = true; };
     sut.ChangesProperty("IsVisible", () => sut.Delete.Call());
     Assert.IsTrue(needToDelete);
     Assert.IsFalse(sut.IsVisible);
     Assert.IsFalse(stateProvider.State.ContainsKey(MealItemEditingViewModel.MEAL_ITEM));
 }
 public void Confirm()
 {
     var sut = new MealItemEditingViewModel();
     var confirmed = false;
     sut.StateProvider = stateProvider;
     sut.Confirmed += delegate { confirmed = true; };
     sut.ChangesProperty("IsVisible", () => sut.Confirm.Call());
     Assert.IsTrue(confirmed);
     Assert.IsFalse(sut.IsVisible);
     Assert.IsFalse(stateProvider.State.ContainsKey(MealItemEditingViewModel.MEAL_ITEM));
 }
 public void Initialize(MealItemEditingViewModel viewModel)
 {
     Delete = Picker.ApplicationBarInfo.Buttons[2];
     ViewModel = viewModel;
     ViewModel.NeedToShow += delegate
     {
         DataContext = ViewModel.Subject;
         Delete.IsEnabled = ViewModel.CanDelete;
         Picker.IsPopupOpen = true;
         controlledClosing = false;
     };
     TranslateApplicationBar();
 }
 public void Show()
 {
     var sut = new MealItemEditingViewModel();
     var model = new MealItem { Value = 5 };
     var mealItem = new MealItemViewModel(model, Substitute.For<Factories>());
     var needToShow = false;
     stateProvider.State[MealItemEditingViewModel.MEAL_ITEM] = model.Serialize(string.Empty);
     model.Value = 1;
     sut.StateProvider = stateProvider;
     sut.NeedToShow += delegate { needToShow = true; };
     sut.ChangesProperty("IsVisible", () => sut.Show(mealItem));
     Assert.AreEqual("5", sut.Subject.Value);
     Assert.IsTrue(needToShow);
     Assert.IsTrue(sut.IsVisible);
 }
 public MainViewModel(Factories factories, Cloud cloud, TimerFactory timerFactory,
     BackgroundWorkerFactory workerFactory, MealEditingViewModel.BackNavigation mealEditingBackNavigation,
     JournalViewModel journal, ProductListingViewModel productListing, MealItemEditingViewModel mealItemEditing,
     MessageDialog messageDialog, WelcomeScreen welcomeScreen, CloudMessages cloudMessages)
 {
     this.factories = factories;
     this.cloud = cloud;
     this.timerFactory = timerFactory;
     this.workerFactory = workerFactory;
     this.mealEditingBackNavigation = mealEditingBackNavigation;
     this.journal = journal;
     this.productListing = productListing;
     this.mealItemEditing = mealItemEditing;
     this.messageDialog = messageDialog;
     this.cloudMessages = cloudMessages;
     WelcomeScreen = welcomeScreen;
     ShareStateProvider();
 }
 public void TestInitialize()
 {
     factories = new FactoriesImpl();
     factories.StorageCreator = new StorageCreatorStub();
     productListing = new ProductListingViewModel(factories,
         new BackgroundWorkerSyncFactory());
     mealItemEditing = new MealItemEditingViewModel();
     sut = CreateSut(factories, productListing: productListing, mealItemEditing: mealItemEditing);
     navigation = new MainViewModel.Navigation();
     sut.Init(navigation);
     var stateProvider = Substitute.For<StateProvider>();
     stateProvider.State.Returns(new Dictionary<string, object>());
     sut.StateProvider = stateProvider;
     navigator = Substitute.For<Navigator>();
 }
 private MainViewModel CreateSut(Factories factories = null, Cloud cloud = null,
     TimerFactory timerFactory = null, ProductListingViewModel productListing = null,
     MealItemEditingViewModel mealItemEditing = null, MessageDialog messageDialog = null,
     WelcomeScreen welcomeScreen = null, CloudMessages cloudMessages = null)
 {
     if (factories == null)
         factories = Substitute.For<Factories>();
     if (cloud == null)
         cloud = Substitute.For<Cloud>();
     if (timerFactory == null)
         timerFactory = Substitute.For<TimerFactory>();
     if (productListing == null)
         productListing = new ProductListingViewModel(factories, new BackgroundWorkerSyncFactory());
     if (mealItemEditing == null)
         mealItemEditing = new MealItemEditingViewModel();
     if (messageDialog == null)
         messageDialog = Substitute.For<MessageDialog>();
     if (welcomeScreen == null)
         welcomeScreen = new WelcomeScreenImpl(messageDialog);
     if (cloudMessages == null)
         cloudMessages = new CloudMessages();
     var journal = new JournalViewModel(factories, new BackgroundWorkerSyncFactory(),
         new SugarEditingViewModel());
     return new MainViewModel(factories, cloud, timerFactory, new BackgroundWorkerSyncFactory(),
         new MealEditingViewModel.BackNavigation(), journal, productListing, mealItemEditing, messageDialog,
         welcomeScreen, cloudMessages);
 }
 private void UntombstoneMealItemEditing()
 {
     var state = StateProvider.State;
     var mealItemEditing = false;
     if (state.ContainsKey(MEAL_ITEM_EDITING))
     {
         mealItemEditing = (bool)state[MEAL_ITEM_EDITING];
     }
     if (mealItemEditing)
     {
         var productId = (Guid)state[MEAL_ITEM_PRODUCT];
         var products = productListing.Products;
         var product = products.FindById(productId);
         if (product != null)
         {
             AddMealItemWithProduct(product);
         }
     }
 }