public async Task ShowsTheOnboardingViewModelIfTheUserHasNotLoggedInPreviously() { ITogglDataSource dataSource = null; UserAccessManager.GetDataSourceIfLoggedIn().Returns(dataSource); await Task.Run(() => AppStart.Start()); await NavigationService.Received().Navigate <OnboardingViewModel>(); }
public async Task CallsForkNavigateToMainTabBarViewModelAndMainViewModelIfTheUserHasLoggedInPreviously() { var dataSource = Substitute.For <ITogglDataSource>(); UserAccessManager.GetDataSourceIfLoggedIn().Returns(dataSource); await Task.Run(() => AppStart.Start()); await NavigationService.Received().ForkNavigate <MainTabBarViewModel, MainViewModel>(); }
public void ReturnsADataSourceIfTheUserExistsInTheDatabase() { var observable = Observable.Return <IDatabaseUser>(FoundationUser.Clean(User)); Database.User.Single().Returns(observable); var result = UserAccessManager.GetDataSourceIfLoggedIn(); result.Should().NotBeNull(); }
public void ReturnsNullIfTheDatabaseHasNoUsers() { var observable = Observable.Throw <IDatabaseUser>(new InvalidOperationException()); Database.User.Single().Returns(observable); var result = UserAccessManager.GetDataSourceIfLoggedIn(); result.Should().BeNull(); }
public void EmitsTheDataSourceWhenUserIsLoggedIn() { var observer = Substitute.For <IObserver <ITogglDataSource> >(); var observable = Observable.Return <IDatabaseUser>(FoundationUser.Clean(User)); Database.User.Single().Returns(observable); UserAccessManager.UserLoggedIn.Subscribe(observer); UserAccessManager.GetDataSourceIfLoggedIn(); observer.Received().OnNext(Arg.Any <ITogglDataSource>()); }
public void DoesNotEmitTheDataSourceWhenUserIsNotLoggedIn() { var observer = Substitute.For <IObserver <ITogglDataSource> >(); var observable = Observable.Throw <IDatabaseUser>(new InvalidOperationException()); Database.User.Single().Returns(observable); UserAccessManager.UserLoggedIn.Subscribe(observer); UserAccessManager.GetDataSourceIfLoggedIn(); observer.DidNotReceive().OnNext(Arg.Any <ITogglDataSource>()); }
public async Task DoesNotShowTheUnauthorizedAccessViewIfUsersApiTokenChanged() { var oldApiToken = Guid.NewGuid().ToString(); var newApiToken = Guid.NewGuid().ToString(); var user = Substitute.For <IThreadSafeUser>(); var dataSource = Substitute.For <ITogglDataSource>(); var userSource = Substitute.For <ISingletonDataSource <IThreadSafeUser> >(); user.ApiToken.Returns(newApiToken); userSource.Current.Returns(Observable.Return(user)); dataSource.User.Returns(userSource); UserAccessManager.GetDataSourceIfLoggedIn().Returns(dataSource); AccessRestrictionStorage.IsUnauthorized(Arg.Is(oldApiToken)).Returns(true); AccessRestrictionStorage.IsApiOutdated().Returns(false); AccessRestrictionStorage.IsClientOutdated().Returns(false); await Task.Run(() => AppStart.Start()); await NavigationService.Received().ForkNavigate <MainTabBarViewModel, MainViewModel>(); }
protected AppStartTest() { AppStart = new AppStart <OnboardingViewModel>(App, TimeService, UserAccessManager, OnboardingStorage, NavigationService, AccessRestrictionStorage); DataSource.SyncManager.Returns(SyncManager); UserAccessManager.GetDataSourceIfLoggedIn().Returns(DataSource); }