public void IsTrueInitially() { var repoSubject = new Subject <IRemoteRepositoryModel>(); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = new RepositoryCloneViewModel( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); Assert.False(vm.LoadingFailed); Assert.True(vm.NoRepositoriesFound); }
public void IsFalseWhenLoadingReposFailsImmediately() { var repoSubject = Observable.Throw <IRemoteRepositoryModel>(new InvalidOperationException("Doh!")); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); Assert.True(vm.LoadingFailed); Assert.False(vm.IsLoading); }
public void IsFalseWhenFailed() { var repoSubject = new Subject <IRepositoryModel>(); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); repoSubject.OnError(new InvalidOperationException()); Assert.False(vm.NoRepositoriesFound); }
public void IsTrueWhenLoadingCompleteNotFailedAndNoRepositories() { var repoSubject = new Subject <IRemoteRepositoryModel>(); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); repoSubject.OnCompleted(); Assert.True(vm.NoRepositoriesFound); }
public async Task StartsTrueBecomesFalseWhenCompleted() { var repoSubject = new Subject <IRemoteRepositoryModel>(); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); Assert.True(vm.IsLoading); var done = new ReplaySubject <Unit>(); done.OnNext(Unit.Default); done.Subscribe(); col.Subscribe(t => done?.OnCompleted(), () => { }); repoSubject.OnNext(Substitute.For <IRemoteRepositoryModel>()); repoSubject.OnNext(Substitute.For <IRemoteRepositoryModel>()); await done; done = null; Assert.True(vm.IsLoading); repoSubject.OnCompleted(); await col.OriginalCompleted; Assert.False(vm.IsLoading); }
public void IsNotEnabledWhenPathIsNotValid() { var col = TrackingCollection.Create(Observable.Empty <IRemoteRepositoryModel>()); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); vm.BaseRepositoryPath = @"c:|fake\path"; Assert.False(vm.CloneCommand.CanExecute(null)); vm.SelectedRepository = Substitute.For <IRemoteRepositoryModel>(); Assert.False(vm.CloneCommand.CanExecute(null)); }
public void IsFalseIfLoadingReposFails() { var repoSubject = new Subject <IRemoteRepositoryModel>(); var col = TrackingCollection.Create(repoSubject); var repositoryHost = Substitute.For <IRepositoryHost>(); repositoryHost.ModelService.GetRepositories(Arg.Any <ITrackingCollection <IRemoteRepositoryModel> >()).Returns(_ => col); var cloneService = Substitute.For <IRepositoryCloneService>(); var vm = GetVM( repositoryHost, cloneService, Substitute.For <IOperatingSystem>(), Substitute.For <INotificationService>(), Substitute.For <IUsageTracker>()); Assert.False(vm.LoadingFailed); repoSubject.OnError(new InvalidOperationException("Doh!")); Assert.True(vm.LoadingFailed); Assert.False(vm.FilterTextIsEnabled); repoSubject.OnCompleted(); }