Beispiel #1
0
            public async Task CallsTheUserAccessManagerWhenThePasswordIsValid()
            {
                ViewModel.Password.OnNext(ValidPassword.ToString());

                ViewModel.Done.Execute();

                TestScheduler.Start();
                await UserAccessManager.Received().RefreshToken(Arg.Is(ValidPassword));
            }
Beispiel #2
0
            public void IsSuccessfullyEmmited()
            {
                var passwordObserver = Observe(ViewModel.Password.Select(Password.From));

                ViewModel.Password.OnNext(ValidPassword.ToString());

                TestScheduler.Start();
                passwordObserver.LastEmittedValue().Should().Be(ValidPassword);
            }
Beispiel #3
0
            public void ReturnsTrueIfThePasswordIsValid()
            {
                var nextIsEnabledObserver = Observe(ViewModel.NextIsEnabled);

                ViewModel.Password.OnNext(ValidPassword.ToString());

                TestScheduler.Start();
                nextIsEnabledObserver.LastEmittedValue().Should().BeTrue();
            }
Beispiel #4
0
            public async Task DoesNotNavigateWhenTheLoginFails()
            {
                ViewModel.Password.OnNext(ValidPassword.ToString());
                UserAccessManager.RefreshToken(Arg.Any <Password>())
                .Returns(Observable.Throw <ITogglDataSource>(new Exception()));

                ViewModel.Done.Execute();

                TestScheduler.Start();
                await NavigationService.DidNotReceive().Navigate <MainViewModel>();
            }
Beispiel #5
0
            public async Task NavigatesToTheMainViewModelModelWhenTheTokenRefreshSucceeds()
            {
                ViewModel.Password.OnNext(ValidPassword.ToString());
                UserAccessManager.RefreshToken(Arg.Any <Password>())
                .Returns(Observable.Return(Substitute.For <ITogglDataSource>()));

                ViewModel.Done.Execute();

                TestScheduler.Start();
                await NavigationService.Received().ForkNavigate <MainTabBarViewModel, MainViewModel>();
            }
Beispiel #6
0
            public void ReturnsFalseWheThePasswordIsValidButTheViewIsLoading()
            {
                var never = Observable.Never <Unit>();

                UserAccessManager.RefreshToken(Arg.Any <Password>()).Returns(never);
                ViewModel.Password.OnNext(ValidPassword.ToString());
                var nextIsEnabledObserver = Observe(ViewModel.NextIsEnabled);

                ViewModel.Done.Execute();

                TestScheduler.Start();
                nextIsEnabledObserver.LastEmittedValue().Should().BeFalse();
            }
Beispiel #7
0
            public void StopsTheViewModelLoadStateWhenItErrors()
            {
                ViewModel.Password.OnNext(ValidPassword.ToString());
                UserAccessManager.RefreshToken(Arg.Any <Password>())
                .Returns(Observable.Throw <ITogglDataSource>(new Exception()));
                var isLoadingObserver = Observe(ViewModel.Done.Executing);

                ViewModel.Done.Execute();

                TestScheduler.Start();
                var messages = isLoadingObserver.Messages.ToList();

                isLoadingObserver.LastEmittedValue().Should().BeFalse();
            }
            public async Task SetsThePasswordFieldWhenValidCredentialsAreProvided()
            {
                arrangeCallToPasswordManagerWithValidCredentials();
                var observer = TestScheduler.CreateObserver <string>();

                ViewModel.Password.Subscribe(observer);

                await ViewModel.StartPasswordManager();

                TestScheduler.Start();
                observer.Messages.AssertEqual(
                    ReactiveTest.OnNext(1, Password.Empty.ToString()),
                    ReactiveTest.OnNext(2, ValidPassword.ToString())
                    );
            }
Beispiel #9
0
            public async Task StopsTheViewModelLoadStateWhenItCompletes()
            {
                await ViewModel.Initialize();

                ViewModel.Password.OnNext(ValidPassword.ToString());
                var isLoadingObserver = Observe(ViewModel.Done.Executing);

                UserAccessManager.RefreshToken(Arg.Any <Password>())
                .Returns(Observable.Return(Substitute.For <ITogglDataSource>()));

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

                isLoadingObserver.LastEmittedValue().Should().BeFalse();
            }