public async Task GetPullRequestForBranches_ShouldCallCorrectUrlAndGetResult() { var pullRequestResponseJson = Utilities.LoadFile(Paths.GetStandardDataPath("GetPullRequestForBranchesWithReviewersResponse.json")); var pullRequestResponseData = new NewtonsoftJsonSerializer().Deserialize <PullRequest>(pullRequestResponseJson); var response = MockRepository.GenerateMock <IRestResponse <PullRequest> >(); response.Stub(x => x.Data).Return(pullRequestResponseData); var responseJson = Utilities.LoadFile(Paths.GetStandardDataPath("GetPullRequestForBranchesResponse.json")); var responseData = new NewtonsoftJsonSerializer().Deserialize <IteratorBasedPage <PullRequest> >(responseJson); var result = _restClient .Capture() .Args <string, int, QueryString, IEnumerable <PullRequest> >((s, url, limit, queryString) => s.GetAllPages <PullRequest>(url, limit, queryString), responseData.Values); var pullRequestResult = _restClient .Capture() .Args <IRestRequest, IRestResponse <PullRequest> >( (s, req) => s.ExecuteTaskAsync <PullRequest>(req), response); var resultData = (await _sut.GetPullRequestForBranches("reponame", "owner", "hhhhhhhhhhhhhhhh", "12")); Assert.AreEqual(1, pullRequestResult.CallCount); var args = result.Args[0]; Assert.Multiple(() => { Assert.AreEqual("repositories/owner/reponame/pullrequests", args.arg1); Assert.AreEqual(20, args.arg2); Assert.AreEqual(@"?q=source.branch.name = ""hhhhhhhhhhhhhhhh"" AND destination.branch.name = ""12"" AND state = ""OPEN""", args.arg3.ToString()); Assert.AreEqual("* NEWFILE created online with Bitbucket", resultData.Description); Assert.AreEqual("master", resultData.Title); Assert.AreEqual("master", resultData.Source.Branch.Name); Assert.AreEqual("testbranch", resultData.Destination.Branch.Name); Assert.AreEqual("bitbucketvsextension", resultData.Reviewers.First().UserName); }); }