public async Task PopulateStatsAsync_OddLoggedDays_ComputesCorrectMedian() { // arrange var tracker = new Tracker { Id = 0 }; var service = new MockTrackerLogService(); service.LoggedDays.Add(new LoggedDay { Date = new DateTime(2002, 1, 1) }); service.LoggedDays.Add(new LoggedDay { Date = new DateTime(2002, 1, 1) }); service.LoggedDays.Add(new LoggedDay { Date = new DateTime(2001, 1, 1) }); service.LoggedDays.Add(new LoggedDay { Date = new DateTime(2000, 1, 1) }); service.LoggedDays.Add(new LoggedDay { Date = new DateTime(2000, 1, 1) }); var vm = new TrackerLogViewModel(tracker, service, new MockSettingsViewModel()); await vm.PopulateAllDayGroupsAsync(); // act await vm.PopulateStatsAsync(); // assert Assert.Equal(1, vm.LoggedDayStats.Median); }
public EditTrackerLogPage(Tracker tracker) : this() { Title = $"Editing {tracker.Name}"; BindingContext = _viewModel = new TrackerLogViewModel(tracker, logService: App.DependencyContainer.GetInstance <ITrackerLogService>(), settingsViewModel: App.DependencyContainer.GetInstance <ISettingsViewModel>()); }
public TrackerLogPage(Tracker tracker) : this() { _tracker = tracker; Title = tracker.Name; BindingContext = _viewModel = new TrackerLogViewModel(tracker, logService: App.DependencyContainer.GetInstance <ITrackerLogService>(), settingsViewModel: App.DependencyContainer.GetInstance <ISettingsViewModel>()); SortOptionPicker.SelectedIndex = 0; SortOptionPicker.SelectedIndexChanged += OnSortChange; }
public async Task PopulateStatsAsync_ServiceFailure_DoesNotComputeStats() { // arrange var tracker = new Tracker { Id = 0 }; var vm = new TrackerLogViewModel(tracker, new FailingTrackerLogService(), new MockSettingsViewModel()); // act await vm.PopulateStatsAsync(); // assert Assert.Null(vm.LoggedDayStats); }
public async Task LogDayAsync_AddsToAllDayGroups() { // arrange var tracker = new Tracker { Id = 0 }; var vm = new TrackerLogViewModel(tracker, new MockTrackerLogService(), new MockSettingsViewModel()); // act await vm.LogDayAsync(); // assert Assert.Single(vm.AllDayGroups, group => group.Date == vm.DateToLog); }
public async Task DeleteLoggedDayAsync_NullDay_DoesNothing() { // arrange var tracker = new Tracker { Id = 0 }; var vm = new TrackerLogViewModel(tracker, new MockTrackerLogService(), new MockSettingsViewModel()); vm.AllDays.Add(null); // act await vm.DeleteLoggedDayAsync(null); // assert Assert.Single(vm.AllDays, expected: null); }
public async Task PopulateStatsAsync_NoLoggedDays_DoesNotComputeStats() { // arrange var tracker = new Tracker { Id = 0 }; var vm = new TrackerLogViewModel(tracker, new MockTrackerLogService(), new MockSettingsViewModel()); // act await vm.PopulateStatsAsync(); // assert Assert.Equal( JsonConvert.SerializeObject(new LoggedDayStats()), JsonConvert.SerializeObject(vm.LoggedDayStats)); }
public async Task LogDayAsync_ServiceFailure_SendsMessage() { // arrange var tracker = new Tracker(); var vm = new TrackerLogViewModel(tracker, new FailingTrackerLogService(), new MockSettingsViewModel()); bool messageSent = false; MessagingCenter.Subscribe <TrackerLogViewModel>(this, TrackerLogViewModel.DatabaseErrorMessage, sender => messageSent = true); // act await vm.LogDayAsync(); // assert Assert.True(messageSent); }
public async Task PopulateStatsAsync_NullAllDayGroups_DoesNotComputeStats() { // arrange var tracker = new Tracker { Id = 0 }; var vm = new TrackerLogViewModel(tracker, new MockTrackerLogService(), new MockSettingsViewModel()) { AllDayGroups = null }; // act await vm.PopulateStatsAsync(); // assert Assert.Null(vm.LoggedDayStats); }
public async Task PopulateAllDayGroupsAsync_ServiceFailure_DoesNotChangeState() { // arrange var tracker = new Tracker { Id = 0 }; var group = new LoggedDayGroup { Date = DateTime.Now.Date, Count = 2 }; var vm = new TrackerLogViewModel(tracker, new FailingTrackerLogService(), new MockSettingsViewModel()); vm.AllDayGroups.Add(group); // act await vm.PopulateAllDayGroupsAsync(); // assert Assert.Single(vm.AllDayGroups, expected: group); }
public async Task PopulateAllDaysAsync_ServiceFailure_DoesNotChangeState() { // arrange var tracker = new Tracker { Id = 0 }; var day = new LoggedDay { Id = 0, TrackerId = 0 }; var vm = new TrackerLogViewModel(tracker, new FailingTrackerLogService(), new MockSettingsViewModel()); vm.AllDays.Add(day); // act await vm.PopulateAllDaysAsync(); // assert Assert.Single(vm.AllDays, expected: day); }
public async Task DeleteLoggedDayAsync_ExistingDay_DeletesDay() { // arrange var tracker = new Tracker { Id = 0 }; var day = new LoggedDay { Id = 0, TrackerId = 0 }; var service = new MockTrackerLogService(); var vm = new TrackerLogViewModel(tracker, service, new MockSettingsViewModel()); service.LoggedDays.Add(day); vm.AllDays.Add(day); // act await vm.DeleteLoggedDayAsync(day); // assert Assert.Empty(vm.AllDays); Assert.Empty(service.LoggedDays); }
public async Task DeleteLoggedDayAsync_ServiceFailure_SendsMessageWithDay() { // arrange var tracker = new Tracker { Id = 0 }; var day = new LoggedDay { Id = 0, TrackerId = 0 }; var vm = new TrackerLogViewModel(tracker, new FailingTrackerLogService(), new MockSettingsViewModel()); vm.AllDays.Add(day); LoggedDay sentDay = null; MessagingCenter.Subscribe <TrackerLogViewModel, LoggedDay>(this, nameof(vm.DeleteLoggedDayCommand), (sender, loggedDay) => sentDay = loggedDay); // act await vm.DeleteLoggedDayAsync(day); // assert Assert.Equal(day, sentDay); }
public TrackerStatsPage(Tracker tracker, TrackerLogViewModel trackerLogViewModel) : this() { Title = $"{tracker.Name} stats"; BindingContext = _viewModel = trackerLogViewModel; }