public void IsPullRequestMergedAsync_ShouldCallbackWithError_WhenResponseIsSomeRandomError()
        {
            var mockResponse = new Mock <IGitHubResponse <object> >(MockBehavior.Strict);
            var mockClient   = new Mock <IGitHubClient>(MockBehavior.Strict);

            mockResponse.Setup(r => r.ErrorException)
            .Returns(new Exception());
            mockResponse.Setup(r => r.StatusCode)
            .Returns(HttpStatusCode.Forbidden);
            var expectedException = new GitHubException(mockResponse.Object,
                                                        ErrorType.Unauthorized);

            mockClient.Setup(c => c.CallApiAsync <object>(It.IsAny <GitHubRequest>(),
                                                          It.IsAny <Action <IGitHubResponse <object> > >(),
                                                          It.IsAny <Action <GitHubException> >()))
            .Callback <GitHubRequest,
                       Action <IGitHubResponse <object> >,
                       Action <GitHubException> >((req, c, e) => {
                e(expectedException);
            })
            .Returns(TestHelpers.CreateTestHandle());
            var pullReqSvc = new PullRequestService(mockClient.Object);

            GitHubException actualException = null;

            pullReqSvc.IsPullRequestMergedAsync("akilb",
                                                "ngithub",
                                                1,
                                                c => { },
                                                e => actualException = e);

            Assert.AreSame(expectedException, actualException);
        }
        public void IsPullRequestMergedAsync_ShouldCallbackWithFalse_WhenResponseIsNotFound()
        {
            var mockResponse = new Mock <IGitHubResponse <object> >(MockBehavior.Strict);
            var mockClient   = new Mock <IGitHubClient>(MockBehavior.Strict);

            mockResponse.Setup(r => r.ErrorException)
            .Returns(new Exception());
            mockResponse.Setup(r => r.StatusCode)
            .Returns(HttpStatusCode.NotFound);
            mockClient.Setup(c => c.CallApiAsync <object>(It.IsAny <GitHubRequest>(),
                                                          It.IsAny <Action <IGitHubResponse <object> > >(),
                                                          It.IsAny <Action <GitHubException> >()))
            .Callback <GitHubRequest,
                       Action <IGitHubResponse <object> >,
                       Action <GitHubException> >((req, c, e) => {
                e(new GitHubException(mockResponse.Object, ErrorType.ResourceNotFound));
            })
            .Returns(TestHelpers.CreateTestHandle());
            var pullReqSvc = new PullRequestService(mockClient.Object);

            var isMerged = true;

            pullReqSvc.IsPullRequestMergedAsync("akilb",
                                                "ngithub",
                                                16,
                                                fl => isMerged = fl,
                                                e => { });

            Assert.IsFalse(isMerged);
        }