Exemplo n.º 1
0
        public void ShouldFetchPullRequestsForEveryTeamMember()
        {
            var teamMembers = new[] { new TeamMember {
                                          Id = Guid.NewGuid()
                                      }, new TeamMember {
                                          Id = Guid.NewGuid()
                                      } };
            var project = new VSTSProject {
                Id = Guid.NewGuid(), Name = "Project 1"
            };
            var repositories = new[] { new VSTSRepository {
                                           Id = Guid.NewGuid(), Name = "Repository 1", Project = project.Id
                                       } };
            var profile = new Profile {
                Id = Guid.NewGuid(), Members = teamMembers.Select(m => m.Id), Repositories = repositories.Select(r => r.Id)
            };

            _repository.Setup(r => r.GetFieldValue(It.IsAny <Expression <Func <Settings, bool> > >(), It.IsAny <Expression <Func <Settings, bool> > >()))
            .Returns(false);
            _repository.Setup(r => r.GetAll <TeamMember>()).Returns(teamMembers);
            _repository.Setup(r => r.GetAll <Profile>()).Returns(new[] { profile });
            _repository.Setup(r => r.GetAll <VSTSRepository>()).Returns(repositories);
            _repository.Setup(r => r.GetAll <VSTSProject>()).Returns(new[] { project });
            _repository.Setup(r => r.CreateOrUpdateAsync(It.IsAny <TeamMember>()))
            .Returns(Task.FromResult(true));
            _vstsClient.Setup(r => r.GetPullRequests(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PullRequestQuery>()))
            .Returns(Task.FromResult(Enumerable.Empty <PullRequest>()));

            _job.Execute();

            _repository.VerifyAll();
            _vstsClient.Verify(r => r.GetPullRequests(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PullRequestQuery>()), Times.Exactly(2));
            _repository.Verify(r => r.CreateOrUpdateAsync(It.IsAny <TeamMember>()), Times.Exactly(2));
        }
Exemplo n.º 2
0
        public void ShouldNotFailIfExceptionIsThrownForOneMemeber()
        {
            var teamMember = new TeamMember {
                Id = Guid.NewGuid()
            };
            var project = new VSTSProject {
                Id = Guid.NewGuid(), Name = "Project 1"
            };
            var repositories = new[] { new VSTSRepository {
                                           Id = Guid.NewGuid(), Name = "Repository 1", Project = project.Id
                                       } };
            var profile = new Profile {
                Id = Guid.NewGuid(), Members = new[] { teamMember.Id }, Repositories = repositories.Select(r => r.Id)
            };

            _repository.Setup(r => r.GetFieldValue(It.IsAny <Expression <Func <Settings, bool> > >(), It.IsAny <Expression <Func <Settings, bool> > >()))
            .Returns(false);
            _repository.Setup(r => r.GetAll <TeamMember>()).Returns(new[] { teamMember });
            _repository.Setup(r => r.GetAll <Profile>()).Returns(new[] { profile });
            _repository.Setup(r => r.GetAll <VSTSRepository>()).Returns(repositories);
            _repository.Setup(r => r.GetAll <VSTSProject>()).Returns(new[] { project });
            _repository.Setup(r => r.CreateOrUpdateAsync(It.IsAny <TeamMember>()))
            .Returns(Task.FromResult(true));
            _vstsClient.Setup(r => r.GetPullRequests(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PullRequestQuery>()))
            .Throws <Exception>();

            _job.Invoking(j => j.Execute()).Should().NotThrow();
        }
Exemplo n.º 3
0
        public void ShouldNotAddDuplicates()
        {
            var pullRequests = new[] { new PullRequest {
                                           PullRequestId = 1
                                       }, new PullRequest {
                                           PullRequestId = 2
                                       }, new PullRequest {
                                           PullRequestId = 3
                                       }, new PullRequest {
                                           PullRequestId = 4
                                       } };
            var teamMember = new TeamMember {
                Id = Guid.NewGuid(), PullRequests = pullRequests.Skip(1).Take(2)
            };
            var project = new VSTSProject {
                Id = Guid.NewGuid(), Name = "Project 1"
            };
            var repositories = new[] { new VSTSRepository {
                                           Id = Guid.NewGuid(), Name = "Repository 1", Project = project.Id
                                       } };
            var profile = new Profile {
                Id = Guid.NewGuid(), Members = new[] { teamMember.Id }, Repositories = repositories.Select(r => r.Id)
            };

            _repository.Setup(r => r.GetFieldValue(It.IsAny <Expression <Func <Settings, bool> > >(), It.IsAny <Expression <Func <Settings, bool> > >()))
            .Returns(false);
            _repository.Setup(r => r.GetAll <TeamMember>()).Returns(new[] { teamMember });
            _repository.Setup(r => r.GetAll <Profile>()).Returns(new[] { profile });
            _repository.Setup(r => r.GetAll <VSTSRepository>()).Returns(repositories);
            _repository.Setup(r => r.GetAll <VSTSProject>()).Returns(new[] { project });
            _repository.Setup(r => r.CreateOrUpdateAsync(It.IsAny <TeamMember>()))
            .Returns(Task.FromResult(true));
            _vstsClient.Setup(r => r.GetPullRequests(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PullRequestQuery>()))
            .Returns(Task.FromResult(pullRequests.AsEnumerable()));

            _job.Execute();

            teamMember.PullRequests.Should().HaveCount(4);
            teamMember.PullRequests.Should().BeEquivalentTo(pullRequests);
            _repository.VerifyAll();
            _vstsClient.Verify(r => r.GetPullRequests(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PullRequestQuery>()), Times.Exactly(1));
            _repository.Verify(r => r.CreateOrUpdateAsync(It.IsAny <TeamMember>()), Times.Exactly(1));
        }
Exemplo n.º 4
0
        public async Task OnGet(Guid?id)
        {
            if (!id.HasValue)
            {
                Project = new VSTSProject {
                    Id = Guid.NewGuid()
                };
                return;
            }

            var project = await _repository.GetSingleAsync <VSTSProject>(p => p.Id == id.Value);

            if (project == null)
            {
                Project = new VSTSProject {
                    Id = Guid.NewGuid()
                };
                return;
            }

            Project = project;
        }
Exemplo n.º 5
0
        private async Task <IEnumerable <PullRequest> > GetPullRequests(VSTSRepository repositoryInfo, VSTSProject project)
        {
            var query = PullRequestQuery.New(Input.Query.StartDate)
                        .WithFilter(p => p.CreationDate >= Input.Query.StartDate && p.CreationDate <= Input.Query.EndDate)
                        .WithParameter("status", "all");

            return(await _vstsRepository.GetPullRequests(project.Name, repositoryInfo.Name, query));
        }
Exemplo n.º 6
0
 internal void VerifyInputObject(ReportQuery query, Profile profile, IEnumerable <TeamMember> members, VSTSRepository[] repositories, VSTSProject project)
 {
     Input.Should().NotBeNull();
     Input.Query.Should().Be(query);
     Input.Profile.Should().Be(profile);
     Input.Repositories.Should().BeEquivalentTo(repositories);
     Input.Members.Should().BeEquivalentTo(members);
     Input.Projects.Should().HaveCount(1);
     Input.Projects.Should().HaveElementAt(0, project);
     Input.ActualEndDate.Should().BeCloseTo(DateTime.UtcNow.Date.AddDays(1).AddMilliseconds(-1));
 }