Ejemplo n.º 1
0
            public async Task ShowsConfirmationDialogWhenThereIsSomethingToPushButSyncIsNotRunning()
            {
                DataSource.HasUnsyncedData().Returns(Observable.Return(true));
                ProgressSubject.OnNext(SyncProgress.Syncing);

                TestScheduler.Start();
                ViewModel.TryLogout.Execute();

                await DialogService.ReceivedWithAnyArgs().Confirm("", "", "", "");
            }
Ejemplo n.º 2
0
            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();
                }
            }
Ejemplo n.º 3
0
            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();
                }
            }
Ejemplo n.º 4
0
            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);
                }
            }
Ejemplo n.º 5
0
            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>();
            }
Ejemplo n.º 7
0
            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>();
            }
Ejemplo n.º 8
0
            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>();
            }
Ejemplo n.º 9
0
            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>();
            }
Ejemplo n.º 10
0
            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);
                }
            }
Ejemplo n.º 11
0
            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);
                }
            }
Ejemplo n.º 12
0
            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();
                }
            }
Ejemplo n.º 13
0
 private void doNotShowConfirmationDialog()
 {
     DataSource.HasUnsyncedData().Returns(Observable.Return(false));
     ProgressSubject.OnNext(SyncProgress.Synced);
 }
Ejemplo n.º 14
0
            public void ChecksIfThereAreUnsyncedDataWhenTheSyncProcessFinishes()
            {
                ProgressSubject.OnNext(SyncProgress.Synced);

                DataSource.Received().HasUnsyncedData();
            }