public async Task CallsTheUserAccessManagerWhenThePasswordIsValid() { ViewModel.Password.OnNext(ValidPassword.ToString()); ViewModel.Done.Execute(); TestScheduler.Start(); await UserAccessManager.Received().RefreshToken(Arg.Is(ValidPassword)); }
public void IsSuccessfullyEmmited() { var passwordObserver = Observe(ViewModel.Password.Select(Password.From)); ViewModel.Password.OnNext(ValidPassword.ToString()); TestScheduler.Start(); passwordObserver.LastEmittedValue().Should().Be(ValidPassword); }
public void ReturnsTrueIfThePasswordIsValid() { var nextIsEnabledObserver = Observe(ViewModel.NextIsEnabled); ViewModel.Password.OnNext(ValidPassword.ToString()); TestScheduler.Start(); nextIsEnabledObserver.LastEmittedValue().Should().BeTrue(); }
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>(); }
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>(); }
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(); }
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()) ); }
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(); }