public string Execute(_Command command)
        {
            var statistic = GetStatistic(command);

            statisticStorage.Save(statistic);
            return(reportBuilder.BuildReport(statistic));
        }
Exemple #2
0
        public string Merge(Command.Infrastructure.Models.Command command)
        {
            var authors   = command.Args.Split(' ');
            var statistic = storage.Get();

            if (CheckAuthors(authors, statistic) != null)
            {
                return(CheckAuthors(authors, statistic));
            }

            var mergeModel = ParseMergeModel(authors, statistic);

            if (mergeModel.ErrorMessage != null)
            {
                return(mergeModel.ErrorMessage);
            }

            var commits = statistic.Commits
                          .Select(commit =>
                                  mergeModel.Duplicates.Contains(commit.Author.Id)
                        ? new Commit(commit.Name, mergeModel.MainAuthor, commit.Insertions, commit.Deletions, commit.Date)
                        : commit).ToList();

            var newStatistic = new StatisticCalculationHelper(commits).Calculte();

            storage.Save(newStatistic);

            return(ReportBuilder.BuildReport(newStatistic));
        }
        private Statistic GetStatistic(_Command command)
        {
            var pathCommand     = $"{command.ExecutedCommand} {command.Args}";
            var commits         = powerShellExecutor.Execute(pathCommand, statsCommand);
            var statisticParser = new StatisticParser(commits);

            return(statisticParser.Parse());
        }
Exemple #4
0
        public void ShouldReturnError_RepoIsNotSelectedYet()
        {
            statisticStorage.Setup(x => x.Get()).Returns(() => null);
            var command = new _Command("b", string.Join(" ", fixture.CreateMany <string>(2)));

            var result = betweenService.GetStatisticBetween(command);

            Assert.AreEqual(BetweenService.RepoNotSelected, result);
        }
Exemple #5
0
        public void ShouldFindCommitsBetweenTwoSpecified_4()
        {
            var statistic = SetupStatistic();
            var first     = statistic.Commits[0];
            var second    = statistic.Commits[9];
            var command   = new _Command("b", string.Join(" ", second.Name, first.Name));

            var result = betweenService.GetStatisticBetween(command);

            reportBuilder.Verify(x => x.BuildReport(It.Is <Statistic>(s => s.Commits.Count == 10)));
        }
Exemple #6
0
        public string GetDateDifStatistic(Command.Infrastructure.Models.Command command)
        {
            var args        = command.Args.Split(' ').Select(x => x.Trim()).ToList();
            var stringDates = args.Take(2).ToArray();
            var statistic   = storage.Get();

            if (CheckArgs(stringDates, statistic) != null)
            {
                return(CheckArgs(stringDates, statistic));
            }

            var dates         = ParseDates(stringDates);
            var actualCommits = statistic.Commits
                                .Where(x => x.Date.Date >= dates[0] && x.Date.Date <= dates[1])
                                .ToList();
            var groupingArguments = new GroupingArgs(actualCommits, GetMethod(args), dates[0], dates[1]);
            var groups            = groupingFactory.GroupBy(groupingArguments);

            return(BuildReport(groups));
        }
Exemple #7
0
        public string GetStatisticBetween(Command.Infrastructure.Models.Command command)
        {
            var commits   = command.Args.Split(' ');
            var statistic = statisticStorage.Get();

            if (Check(commits, statistic) != null)
            {
                return(Check(commits, statistic));
            }

            var searchResult = FindCommits(commits, statistic);

            if (searchResult.ErrorMessage != null)
            {
                return(searchResult.ErrorMessage);
            }

            var recalculatedStatistic = RecalculateStatistic(searchResult.Commtis);

            return(reportBuilder.BuildReport(recalculatedStatistic));
        }
 public string DateDif(_Command command)
 {
     return(dateDifService.GetDateDifStatistic(command));
 }
 public string Merge(_Command command)
 {
     return(mergeService.Merge(command));
 }
Exemple #10
0
 public string Between(_Command command)
 {
     return(betweenService.GetStatisticBetween(command));
 }
Exemple #11
0
 public string Cd(_Command command)
 {
     return(statisticService.Execute(command));
 }