public void QueriesTheApiIfAnyProjectIsNotFoundInTheDatabase(NonEmptyArray <NonNegativeInt> projectIds) { var actualProjectIds = projectIds.Get.Select(i => (long)i.Get).Distinct().ToArray(); if (actualProjectIds.Length < 2) { return; } var projectsInDb = actualProjectIds.Where((id, i) => i % 2 == 0).ToArray(); var projectsInApi = actualProjectIds.Where((id, i) => 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(); ProjectsApi.Received() .Search(workspaceId, Arg.Is <long[]>( calledIds => ensureExpectedIdsAreReturned(calledIds, projectsInApi))); }
public void CachesTheApiResultsInMemorySoTheApiIsNotCalledTwiceForTheSameProjects( NonEmptyArray <NonNegativeInt> projectIds) { var actualProjectIds = projectIds.Get.Select(i => (long)i.Get).Distinct().ToArray(); var idCount = actualProjectIds.Length; if (idCount < 2) { return; } var dbProjectCount = (int)Math.Floor((float)idCount / 2); var apiProjectCount = idCount - dbProjectCount; var projectsInDb = actualProjectIds.Take(dbProjectCount).ToArray(); var projectsInApi = actualProjectIds.TakeLast(apiProjectCount).ToArray(); var summaries = getSummaryList(actualProjectIds); apiProjectsSummary.ProjectsSummaries.Returns(summaries); configureRepositoryToReturn(projectsInDb, projectsInApi); configureApiToReturn(projectsInApi); GetInteractor(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now).Execute().Wait(); GetInteractor(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now).Execute().Wait(); ProjectsApi.Received(1) .Search(workspaceId, Arg.Is <long[]>( calledIds => ensureExpectedIdsAreReturned(calledIds, projectsInApi))); }
public void CachesTheApiResultsInMemorySoTheApiIsNotCalledTwiceForTheSameProjects( NonEmptyArray <NonNegativeInt> projectIds) { var actualProjectIds = projectIds.Get.Select(i => (long)i.Get).Distinct().ToArray(); if (actualProjectIds.Length < 2) { return; } 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); ReportsProvider.GetProjectSummary(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now).Wait(); ReportsProvider.GetProjectSummary(workspaceId, DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now).Wait(); ProjectsApi.Received(1) .Search(workspaceId, Arg.Is <long[]>( calledIds => ensureExpectedIdsAreReturned(calledIds, projectsInApi))); }