public async Task GetPageComments_ShouldReturnOneComment_WhenCommentsListHasOneComment() { // Arrange var comments = new FacebookCommentsPage { Comments = new List <FacebookComment> { new FacebookComment { Id = "id" } } }; _httpMockHandler.When(FacebookOkCommentsUrlPattern) .Respond(HttpStatusCode.OK, "application/json", "{}"); _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>()) .Returns(comments, null, null); // null stops recursion var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId"); // Assert result.Should().HaveCount(1); result.FirstOrDefault().Children.Should().BeEmpty(); }
public void GetAccessToken_ShouldThrowArgumentNullException_WhenAppSecretIsInvalid(string appSecret) { // Arrange var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", appSecret); // Assert action.ShouldThrow <ArgumentNullException>(); }
public void GetPageComments_ShouldThrowArgumentNullException_WhenPageIdIsInvalid(string pageId) { // Arrange var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act Func <Task> action = async() => await wrapper.GetPageCommentsAsync("accessToken", pageId); // Assert action.ShouldThrow <ArgumentNullException>(); }
public void GetAccessToken_ShouldThrowFacebookApiException_WhenClientReponseIsNotSuccess() { // Arrange _httpMockHandler.When("*") .Respond(HttpStatusCode.InternalServerError, "application/json", string.Empty); var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", "appSecret"); // Assert action.ShouldThrow <FacebookApiException>() .And.Message.Should().Be("Http client response was not successful."); }
public async Task GetPageComments_ShouldReturnEmptyList_WhenPageIsNull() { // Arrange _httpMockHandler.When(FacebookOkCommentsUrlPattern) .Respond(HttpStatusCode.OK, "application/json", "{}"); _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>()).Returns(null as FacebookCommentsPage); var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId"); // Assert result.Should().BeEmpty(); }
public void GetPageComments_ShouldThrowFacebookApiException_WhenClientReponseContentIsEmpty() { // Arrange _httpMockHandler.When(FacebookOkCommentsUrlPattern) .Respond(HttpStatusCode.OK, "application/json", string.Empty); var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act Func <Task> action = async() => await wrapper.GetPageCommentsAsync("accessToken", "pageId"); // Assert action.ShouldThrow <FacebookApiException>() .And.Message.Should().Be("Http client response is empty."); }
public void GetAccessToken_ShouldThrowFacebookApiException_WhenClientReponseParsingReturnsNull() { // Arrange _httpMockHandler.When("*") .Respond(HttpStatusCode.OK, "application/json", "content"); _jsonParser.ParseJsonResponse <FacebookAccessToken>(Arg.Any <string>()) .Returns(null as FacebookAccessToken); var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", "appSecret"); // Assert action.ShouldThrow <FacebookApiException>() .And.Message.Should().Be("Token parsing failed."); }
public async Task GetPageComments_ShouldReturnOneCommentWithOneChild_WhenCommentsListHasOneCommentWithReply() { // Arrange const string commentId = "comment"; const string replyId = "reply"; var comments = new FacebookCommentsPage { Comments = new List <FacebookComment> { new FacebookComment { Id = commentId } } }; var comments2 = new FacebookCommentsPage { Comments = new List <FacebookComment> { new FacebookComment { Id = replyId } } }; _httpMockHandler.When(FacebookOkCommentsUrlPattern) .Respond(HttpStatusCode.OK, "application/json", "{}"); _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>()) .Returns(comments, comments2, null); // second call returns reply, and null stops recursion var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId"); // Assert result.Should().HaveCount(1); result.FirstOrDefault().Id.Should().Be(commentId); result.FirstOrDefault().Children.Should().HaveCount(1); result.FirstOrDefault().Children.FirstOrDefault().Id.Should().Be(replyId); }
public async Task GetAccessToken_ShouldReturnAccessToken_WhenClientReponseContentContainsAccessToken() { // Arrange const string accessToken = "123"; _httpMockHandler.When("https://graph.facebook.com/oauth/access_token*") .Respond(HttpStatusCode.OK, "application/json", "content"); _jsonParser.ParseJsonResponse <FacebookAccessToken>(Arg.Any <string>()) .Returns(new FacebookAccessToken { AccessToken = accessToken }); var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser); // Act var result = await wrapper.GetAccessTokenAsync("appId", "appSecret"); // Assert result.Should().Be(accessToken); }