public async Task HandleEventTest() { // setup var appTelemetry = new Mock <IAppTelemetry>(); var gitHubClientAdapter = new Mock <IGitHubClientAdapter>(); appTelemetry.Setup(f => f.RecordMetric(It.IsAny <string>(), It.IsAny <long>())); var gitHubClientAdapterFactory = new Mock <IGitHubClientAdapterFactory>(); gitHubClientAdapterFactory.Setup(f => f.GetGitHubClientAdapterAsync(It.IsAny <long>(), It.IsAny <string>())) .ReturnsAsync(gitHubClientAdapter.Object); gitHubClientAdapter.Setup(f => f.GetPullRequestFilesAsync(It.IsAny <long>(), It.IsAny <int>())) .ReturnsAsync(new List <PullRequestFile>()); gitHubClientAdapter.Setup(f => f.GetIssueLabelsAsync(It.IsAny <long>(), It.IsAny <int>())) .ReturnsAsync(new List <Label>()); gitHubClientAdapter.Setup(f => f.GetIssueCommentsAsync(It.IsAny <long>(), It.IsAny <int>())) .ReturnsAsync(new List <IssueComment>()); var installationEventHandler = new PullRequestEventHandler( gitHubClientAdapterFactory.Object, appTelemetry.Object, new Mock <ILogger <PullRequestEventHandler> >().Object); // act await installationEventHandler.HandleEvent(await File.ReadAllTextAsync(@"Data/PulRequestPayload.txt")); // assert appTelemetry.Verify( f => f.RecordMetric(It.IsAny <string>(), It.IsAny <long>()), Times.Once); }
public GithubWebhookController( IssueCommentEventHandler issueCommentEventHandler, PullRequestReviewEventHandler pullRequestReviewEventHandler, PullRequestEventHandler pullRequestEventHandler, PushEventHandler pushEventHandler, StatusEventHandler statusEventHandler) { handlers = new Dictionary <string, Func <JObject, Task <WebhookResponse> > > { { "issue_comment", data => issueCommentEventHandler.Handle(data.ToObject <IssueCommentEvent>()) }, { "pull_request_review", data => pullRequestReviewEventHandler.Handle(data.ToObject <PullRequestReviewEvent>()) }, { "pull_request", data => pullRequestEventHandler.Handle(data.ToObject <PullRequestEvent>()) }, { "status", data => statusEventHandler.Handle(data.ToObject <StatusEvent>()) }, { "push", data => pushEventHandler.Handle(data.ToObject <PushEvent>()) }, }; }