Exemplo n.º 1
0
            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)));
            }
Exemplo n.º 2
0
            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)));
            }
Exemplo n.º 3
0
            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)));
            }