public async Task ReturnsSuccessTransitionWhenItDeletesSomeProjects() { var project = new MockProject { Id = 123, SyncStatus = SyncStatus.RefetchingNeeded }; projectsDataSource.GetAll(Arg.Any <Func <IDatabaseProject, bool> >()) .Returns(Observable.Return(new[] { project })); timeEntriesDataSource.GetAll(Arg.Any <Func <IDatabaseTimeEntry, bool> >()) .Returns(Observable.Return(new IThreadSafeTimeEntry[0])); var transition = await state.Start(); transition.Result.Should().Be(state.FinishedDeleting); }
public IObservable <ITransition> Start() => projectsDataSource.GetAll(project => project.SyncStatus == SyncStatus.RefetchingNeeded) .SelectMany(CommonFunctions.Identity) .SelectMany(notReferencedByAnyTimeEntryOrNull) .Where(project => project != null) .ToList() .SelectMany(projectsDataSource.DeleteAll) .Select(FinishedDeleting.Transition());
public async Task ReturnsSuccessResultWhenTimeEntriesDoNotHaveProjectsOrTheProjectsAreInTheDatabase() { var fetchObservables = fetch(new MockTimeEntry { ProjectId = null }, new MockTimeEntry { ProjectId = 123 }); dataSource.GetAll(Arg.Any <Func <IDatabaseProject, bool> >()) .Returns(Observable.Return <IEnumerable <IThreadSafeProject> >(new[] { new MockProject() })); var transition = await state.Start(fetchObservables); transition.Result.Should().Be(state.FinishedPersisting); }
private IObservable <IGrouping <long, IThreadSafeProject> > getProjectsWhichNeedsRefetching() => dataSource.GetAll(project => project.SyncStatus == SyncStatus.RefetchingNeeded && project.At < yesterdayThisTime) .SelectMany(projects => projects.GroupBy(project => project.WorkspaceId).OrderBy(group => group.Key)) .FirstOrDefaultAsync();
private void setStoredProjects(params IThreadSafeProject[] projects) { dataSource.GetAll(Arg.Any <Func <IDatabaseProject, bool> >()) .Returns(callInfo => Observable.Return( projects.Where <IThreadSafeProject>(callInfo.Arg <Func <IDatabaseProject, bool> >()))); }
private IObservable <bool> needsGhostProject(ITimeEntry timeEntry) => timeEntry.ProjectId.HasValue ? dataSource.GetAll(project => project.Id == timeEntry.ProjectId.Value) .SingleAsync() .Select(projects => projects.None()) : Observable.Return(false);
public GetProjectsAutocompleteSuggestionsInteractorTests() { dataSource.GetAll(Arg.Any <Func <IDatabaseProject, bool> >()) .Returns(callInfo => Observable.Return(Projects.Where(callInfo.Arg <Func <IThreadSafeProject, bool> >()))); }
private IObservable <IEnumerable <IThreadSafeProject> > getAllProjects() => dataSource.GetAll(project => project.Active);