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)); }
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(); }
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)); }
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; }
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)); }
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)); }