Inheritance: ViewModelBase
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            ViewModel = GetCounterViewModel();

            Bind();
        }
 public void ExecutingTheIncrementCommandShouldIncrementTheValueInTheDatabaseHelper()
 {
     _mockDatabaseHelper.Setup(d => d.IncrementCounterAsync(It.IsAny<Counter>())).Callback<Counter>(c => ++c.Value);
     var counter = new Counter {Value = 10};
     var vm = new CounterViewModel(counter, _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.IncrementCommand.Execute(null);
     _mockDatabaseHelper.Verify(d => d.IncrementCounterAsync(counter));
     vm.Value.Should().Be("11");
 }
        public void BindCounterViewModel(CounterViewModel counterViewModel)
        {
            if (_counterViewModel != null)
                _counterViewModel.PropertyChanged -= CounterViewModelOnPropertyChanged;

            _counterViewModel = counterViewModel;
            _counterViewModel.PropertyChanged += CounterViewModelOnPropertyChanged;

            _name.Text = counterViewModel.Name;
            _description.Text = counterViewModel.Description;
            _value.Text = counterViewModel.Value;
        }
 private static bool Matches(CounterViewModel cvm, Counter counter)
 {
     return cvm.Name == counter.Name &&
            cvm.Description == counter.Description &&
            cvm.Value == counter.Value.ToString("N0");
 }
 public void ExecutingTheSaveCommandUpdatesTheCounterInTheDatabase()
 {
     var counter = new Counter { Value = 10, Name = "Name", Description = "Description" };
     var vm = new CounterViewModel(counter, _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.Name = "New Name";
     vm.Description = "New Description";
     vm.SaveCommand.Execute(null);
     _mockDatabaseHelper.Verify(d => d.AddOrUpdateCounterAsync(counter));
 }
 public void ExecutingTheSaveCommandUpdatesTheChangesOnTheCounter()
 {
     var counter = new Counter {Value = 10, Name = "Name", Description = "Description"};
     var vm = new CounterViewModel(counter, _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.Name = "New Name";
     vm.Description = "New Description";
     vm.SaveCommand.Execute(null);
     counter.Name.Should().Be("New Name");
     counter.Description.Should().Be("New Description");
 }
        public void ExecutingTheEditCommandNavigatesToTheEditScreen()
        {
            var counter = new Counter();
            var vm = new CounterViewModel(counter, _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
            vm.EditCommand.Execute(null);

            _mockNavigationService.Verify(n => n.NavigateTo(ViewModelLocator.EditCounterPageKey, counter));
        }
 public void SaveComandAddsTheCounterAndNavigatesBack()
 {
     var vm = new CounterViewModel(new Counter(), _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.Name = "Foo";
     vm.Description = "Bar";
     vm.SaveCommand.Execute(null);
     _mockDialogService.Verify(d => d.ShowError(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), null), Times.Never);
     _mockDatabaseHelper.Verify(d => d.AddOrUpdateCounterAsync(It.IsAny<Counter>()), Times.Once);
     _mockNavigationService.Verify(n => n.GoBack(), Times.Once);
 }
 public void SaveCommandRaisesAnErrorIfTheDescriptionIsNotSet()
 {
     var vm = new CounterViewModel(new Counter(), _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.Name = "Foo";
     vm.SaveCommand.Execute(null);
     _mockDialogService.Verify(d => d.ShowError(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), null), Times.Once);
     _mockDatabaseHelper.Verify(d => d.AddOrUpdateCounterAsync(It.IsAny<Counter>()), Times.Never);
 }
 public void GoBackCommandNavigatesBackwards()
 {
     var vm = new CounterViewModel(new Counter(), _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     vm.GoBackCommand.Execute(null);
     _mockNavigationService.Verify(n => n.GoBack(), Times.Once);
 }
 public void ExecutingTheDeleteCommandAndSelectingNoOnTheDialogDoesNotDeleteTheCounter()
 {
     var counter = new Counter { Value = 10, Name = "Name", Description = "Description" };
     var vm = new CounterViewModel(counter, _mockDatabaseHelper.Object, _mockDialogService.Object, _mockNavigationService.Object);
     _mockDialogService.Setup(d => d.ShowMessage($"Are you sure you want to delete {vm.Name}?", "Delete counter", "Yes", "No", null))
         .ReturnsAsync(false);
     vm.DeleteCommand.Execute(null);
     _mockDatabaseHelper.Verify(d => d.DeleteCounterAsync(counter), Times.Never);
 }