public void ReturnsOnlyOneListIfItUsesTheMemoryCache(NonEmptyArray <NonNegativeInt> projectIds) { var actualProjectIds = projectIds.Get.Select(i => (long)i.Get).Distinct().ToArray(); if (actualProjectIds.Length < 2) { return; } ReportsMemoryCache = new ReportsMemoryCache(); var projectsInDb = actualProjectIds.Where((i, id) => i % 2 == 0).ToArray(); var projectsInApi = actualProjectIds.Where((i, id) => i % 2 != 0).ToArray(); var summaries = getSummaryList(actualProjectIds); apiProjectsSummary.ProjectsSummaries.Returns(summaries); configureRepositoryToReturn(projectsInDb, projectsInApi); configureApiToReturn(projectsInApi); GetInteractor(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now).Execute().Wait(); var lists = GetInteractor(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now) .Execute() .ToList() .Wait(); lists.Should().HaveCount(1); }
public GetProjectSummaryInteractor( ITogglApi api, ITogglDatabase database, IAnalyticsService analyticsService, ReportsMemoryCache memoryCache, long workspaceId, DateTimeOffset startDate, DateTimeOffset?endDate) : base(analyticsService) { Ensure.Argument.IsNotNull(api, nameof(api)); Ensure.Argument.IsNotNull(database, nameof(database)); projectsApi = api.Projects; projectsRepository = database.Projects; clientsRepository = database.Clients; projectSummaryApi = api.ProjectsSummary; timeEntriesReportsApi = api.TimeEntriesReports; this.endDate = endDate; this.startDate = startDate; this.workspaceId = workspaceId; this.memoryCache = memoryCache; }