public async Task ShowsConfirmationDialogWhenThereIsSomethingToPushButSyncIsNotRunning() { DataSource.HasUnsyncedData().Returns(Observable.Return(true)); ProgressSubject.OnNext(SyncProgress.Syncing); TestScheduler.Start(); ViewModel.TryLogout.Execute(); await DialogService.ReceivedWithAnyArgs().Confirm("", "", "", ""); }
public void SetsTheIsRunningSyncAndIsSyncedFlagsToFalseAfterTheIsLoggingInFlagIsSetAndDoesNotSetThemToTrueNoMatterWhatStatusesAreObserved(NonEmptyArray <SyncProgress> statuses) { DataSource.Logout().Returns(Observable.Never <Unit>()); ViewModel.LogoutCommand.ExecuteAsync(); foreach (var state in statuses.Get) { ProgressSubject.OnNext(state); ViewModel.IsRunningSync.Should().BeFalse(); ViewModel.IsSynced.Should().BeFalse(); } }
public void DoesNotUnsetTheIsLoggingOutFlagAfterItIsSetNoMatterWhatStatusesAreObserved( NonEmptyArray <SyncProgress> statuses) { DataSource.Logout().Returns(Observable.Never <Unit>()); ViewModel.LogoutCommand.ExecuteAsync(); foreach (var state in statuses.Get) { ProgressSubject.OnNext(state); ViewModel.IsLoggingOut.Should().BeTrue(); } }
public void SetsIsSyncedCorrectly(NonEmptyArray <SyncProgress> statuses) { foreach (var state in statuses.Get) { if (state == SyncProgress.Unknown) { continue; } ProgressSubject.OnNext(state); ViewModel.IsSynced.Should().Be(state == SyncProgress.Synced); } }
public async Task DoesNotProceedWithLogoutWhenUserClicksCancelButtonInTheDialog() { ProgressSubject.OnNext(SyncProgress.Syncing); DialogService.Confirm( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(Observable.Return(false)); TestScheduler.Start(); ViewModel.TryLogout.Execute(); InteractorFactory.DidNotReceive().Logout(Arg.Any <LogoutSource>()); await NavigationService.DidNotReceive().Navigate <LoginViewModel>(); }
public async Task ProceedsWithLogoutWhenUserClicksSignOutButtonInTheDialog() { ProgressSubject.OnNext(SyncProgress.Syncing); DialogService.Confirm( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(Observable.Return(true)); await ViewModel.TryLogout(); await DataSource.Received().Logout(); await NavigationService.Received().Navigate <LoginViewModel>(); }
public async Task ProceedsWithLogoutWhenUserClicksSignOutButtonInTheDialog() { ProgressSubject.OnNext(SyncProgress.Syncing); DialogService.Confirm( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(Observable.Return(true)); TestScheduler.Start(); ViewModel.TryLogout.Execute(); await InteractorFactory.Received().Logout(LogoutSource.Settings).Execute(); await NavigationService.Received().Navigate <LoginViewModel>(); }
public async Task ProceedsWithLogoutWhenUserClicksSignOutButtonInTheDialog() { ProgressSubject.OnNext(SyncProgress.Syncing); DialogService.Confirm( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(true); await ViewModel.LogoutCommand.ExecuteAsync(); ViewModel.IsLoggingOut.Should().BeTrue(); await DataSource.Received().Logout(); await NavigationService.Received().Navigate <OnboardingViewModel>(); }
public async Task DoesNotProceedWithLogoutWhenUserClicksCancelButtonInTheDialog() { ProgressSubject.OnNext(SyncProgress.Syncing); DialogService.Confirm( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(Observable.Return(false)); await ViewModel.LogoutCommand.ExecuteAsync(); ViewModel.IsLoggingOut.Should().BeFalse(); await DataSource.DidNotReceive().Logout(); await NavigationService.DidNotReceive().Navigate <LoginViewModel>(); }
public void EmitTheAppropriateIsRunningSyncValues(NonEmptyArray <SyncProgress> statuses) { DataSource.HasUnsyncedData().Returns(Observable.Return(false)); var observer = TestScheduler.CreateObserver <bool>(); var viewModel = CreateViewModel(); viewModel.IsRunningSync.Subscribe(observer); foreach (var state in statuses.Get) { observer.Messages.Clear(); ProgressSubject.OnNext(state); var isRunningSync = observer.Messages.Single().Value.Value; isRunningSync.Should().Be(state == SyncProgress.Syncing); } }
public void EmitTheAppropriateIsSyncedValues(NonEmptyArray <SyncProgress> statuses) { var observer = TestScheduler.CreateObserver <bool>(); var viewModel = CreateViewModel(); viewModel.IsSynced.Subscribe(observer); foreach (var state in statuses.Get) { if (state == SyncProgress.Unknown) { continue; } observer.Messages.Clear(); ProgressSubject.OnNext(state); var isSynced = observer.Messages.Single().Value.Value; isSynced.Should().Be(state == SyncProgress.Synced); } }
public void DoesNotEverSetBothIsRunningSyncAndIsSyncedBothToTrue(NonEmptyArray <SyncProgress> statuses) { DataSource.HasUnsyncedData().Returns(Observable.Return(false)); var syncedObserver = TestScheduler.CreateObserver <bool>(); var syncingObserver = TestScheduler.CreateObserver <bool>(); var viewModel = CreateViewModel(); viewModel.IsSynced.Subscribe(syncedObserver); viewModel.IsRunningSync.Subscribe(syncingObserver); foreach (var state in statuses.Get) { syncedObserver.Messages.Clear(); syncingObserver.Messages.Clear(); ProgressSubject.OnNext(state); var isSynced = syncedObserver.Messages.Single().Value.Value; var isRunningSync = syncingObserver.Messages.Single().Value.Value; (isRunningSync && isSynced).Should().BeFalse(); } }
private void doNotShowConfirmationDialog() { DataSource.HasUnsyncedData().Returns(Observable.Return(false)); ProgressSubject.OnNext(SyncProgress.Synced); }
public void ChecksIfThereAreUnsyncedDataWhenTheSyncProcessFinishes() { ProgressSubject.OnNext(SyncProgress.Synced); DataSource.Received().HasUnsyncedData(); }