public async Task LoadContributorStats(string contributorId, string dateRange = DateRangesConsts.All)
        {
            IsLoading = true;

            DateTime contributorStatsDateTo         = DateTimeConsts.Today;
            DateTime contributorStatsDateFrom       = DateRangeHelper.GetStartRangeDateTime(dateRange);
            var      contributorStatsDateToString   = (contributorStatsDateTo).ToString(DateTimeConsts.DateTimeFormat);
            var      contributorStatsDateFromString = (contributorStatsDateFrom).ToString(DateTimeConsts.DateTimeFormat);

            ContributorStatsDateRange = string.Format(ContributorStatsDateRangeStringFormat, contributorStatsDateFromString, contributorStatsDateToString);

            ContributorStats = await _contributorService.GetContributorStats(contributorId, contributorStatsDateFrom, contributorStatsDateTo);

            if (dateRange == DateRangesConsts.All)
            {
                var previousContributorStats = await _contributorService.GetContributorStats(contributorId, DateTimeConsts.UnixEpoch, DateTimeConsts.Yesterday);

                ContributorStatsIncrement = new ContributorStatsDto
                {
                    Commits          = contributorStats.Commits - previousContributorStats.Commits,
                    Merges           = contributorStats.Merges - previousContributorStats.Merges,
                    LinesOfCode      = contributorStats.LinesOfCode - previousContributorStats.LinesOfCode,
                    ContribToProject = contributorStats.ContribToProject - previousContributorStats.ContribToProject
                };
            }
            else
            {
                ContributorStatsIncrement = new ContributorStatsDto
                {
                    Commits          = int.MinValue,
                    Merges           = int.MinValue,
                    LinesOfCode      = int.MinValue,
                    ContribToProject = double.MinValue
                };
            }

            IsLoading = false;
        }
Example #2
0
        public ContributorServiceTestsFixture()
        {
            UnlimitedDateContributorId               = "U1d4c2RYTjBjbUYwYVc5dUxYZGxZZz09OktyeXN0aWFuIEN6YXBsaWNraTprcnlzdGlhbi5jemFwbGlja2lAaW50aXZlLmNvbQ==";
            UnlimitedDateContributorRepositoryId     = "SWxsdXN0cmF0aW9uLXdlYg==";
            UnlimitedDateContributorName             = "Krystian Czaplicki";
            UnlimitedDateContributorEmail            = "*****@*****.**";
            UnlimitedDateContributorCommits          = 5;
            UnlimitedDateContributorMerges           = 1;
            UnlimitedDateContributorLinesOfCode      = 103;
            UnlimitedDateContributorContribToProject = 0.321;

            LimitedDateContributorId               = "U1d4c2RYTjBjbUYwYVc5dUxYZGxZZz09OktyeXN0aWFuIEN6YXBsaWNraTprcnlzdGlhbi5jemFwbGlja2lAaW50aXZlLmNvbQ==";
            LimitedDateContributorRepositoryId     = "SWxsdXN0cmF0aW9uLXdlYg==";
            LimitedDateContributorName             = "Krystian Czaplicki";
            LimitedDateContributorEmail            = "*****@*****.**";
            LimitedDateContributorCommits          = 15;
            LimitedDateContributorMerges           = 3;
            LimitedDateContributorLinesOfCode      = 303;
            LimitedDateContributorContribToProject = 0.432;

            UnlimitedDateContributor = new ContributorStatsDto
            {
                Id               = UnlimitedDateContributorId,
                RepositoryId     = UnlimitedDateContributorRepositoryId,
                Name             = UnlimitedDateContributorName,
                Email            = UnlimitedDateContributorEmail,
                Commits          = UnlimitedDateContributorCommits,
                Merges           = UnlimitedDateContributorMerges,
                LinesOfCode      = UnlimitedDateContributorLinesOfCode,
                ContribToProject = UnlimitedDateContributorContribToProject
            };

            LimitedDateContributor = new ContributorStatsDto
            {
                Id               = LimitedDateContributorId,
                RepositoryId     = LimitedDateContributorRepositoryId,
                Name             = LimitedDateContributorName,
                Email            = LimitedDateContributorEmail,
                Commits          = LimitedDateContributorCommits,
                Merges           = LimitedDateContributorMerges,
                LinesOfCode      = LimitedDateContributorLinesOfCode,
                ContribToProject = LimitedDateContributorContribToProject
            };

            LimitedDateContributorFrom = new DateTime(2010, 1, 1, 8, 0, 0, DateTimeKind.Utc);
            LimitedDateContributorTo   = new DateTime(2015, 1, 1, 8, 0, 0, DateTimeKind.Utc);

            HttpMessageHandler = new MockHttpMessageHandler();
            HttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsUrl, UnlimitedDateContributorId))
            .Respond("application/json", JsonConvert.SerializeObject(UnlimitedDateContributor));
            HttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                  LimitedDateContributorId,
                                                  LimitedDateContributorFrom.ToUnixTimestamp(),
                                                  LimitedDateContributorTo.ToUnixTimestamp()))
            .Respond("application/json", JsonConvert.SerializeObject(LimitedDateContributor));
            HttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                  LimitedDateContributorId,
                                                  LimitedDateContributorFrom.ToUnixTimestamp(),
                                                  "*"))
            .Respond("application/json", JsonConvert.SerializeObject(LimitedDateContributor));

            EmptyResultsHttpMessageHandler = new MockHttpMessageHandler();
            EmptyResultsHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsUrl, UnlimitedDateContributorId))
            .Respond("application/json", "[]");
            EmptyResultsHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                              LimitedDateContributorId,
                                                              LimitedDateContributorFrom.ToUnixTimestamp(),
                                                              LimitedDateContributorTo.ToUnixTimestamp()))
            .Respond("application/json", "[]");
            EmptyResultsHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                              LimitedDateContributorId,
                                                              LimitedDateContributorFrom.ToUnixTimestamp(),
                                                              "*"))
            .Respond("application/json", "[]");

            ErrorStatusCodeHttpMessageHandler = new MockHttpMessageHandler();
            ErrorStatusCodeHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsUrl, UnlimitedDateContributorId))
            .Respond(HttpStatusCode.BadRequest);
            ErrorStatusCodeHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                                 LimitedDateContributorId,
                                                                 LimitedDateContributorFrom.ToUnixTimestamp(),
                                                                 LimitedDateContributorTo.ToUnixTimestamp()))
            .Respond(HttpStatusCode.BadRequest);
            ErrorStatusCodeHttpMessageHandler.When(string.Format(RestApiUrlsConsts.GetContributorStatsWithRangeUrl,
                                                                 LimitedDateContributorId,
                                                                 LimitedDateContributorFrom.ToUnixTimestamp(),
                                                                 LimitedDateContributorTo.ToUnixTimestamp()))
            .Respond(HttpStatusCode.BadRequest);
        }