public async Task GetRepositoryEntities_ReturnsEmptyCollection_WhenApiIsNonSuccess() { var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Returns( Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotFound))); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); var response = await sut.GetRepositoryEntities("repoUrl"); Assert.That(response.Count() == 0); }
public async Task GetUserEntity_ReturnsNull_WhenApiIsNonSuccess() { var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Returns( Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotFound))); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); var response = await sut.GetUserEntity("gitHandle"); Assert.IsNull(response); }
public async Task GetUserEntity_LogsErrors_WhenclientThrowsExceptions(string errorMessage) { var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockLogger.Setup(e => e.Error(It.IsAny <Exception>(), "gitHandle")).Verifiable(); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Throws(new Exception(errorMessage)); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); Assert.ThrowsAsync <Exception>(async() => await sut.GetUserEntity("gitHandle")); mockLogger.Verify(e => e.Error(It.IsAny <Exception>(), "gitHandle"), Times.Once); }
public async Task GetUserEntity_ReturnsCorrectObject_WhenApiIsOK(string name, string avatar, string location) { var httpResponseString = string.Format(userResponseJsonFormatString, name, avatar, location); var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Returns(Task.FromResult( new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(httpResponseString, Encoding.UTF8, "application/json") })); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); var response = await sut.GetUserEntity("gitHandle"); Assert.That(response.login == name); Assert.That(response.avatar_url == avatar); Assert.That(response.location == location); }
public async Task GetRepositoryEntities_ReturnsCorrectObject_WhenApiIsOK(string name, int stargazers) { var httpResponseString = string.Format(repositoryResponseJsonFormatString, name, stargazers); var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Returns(Task.FromResult( new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(httpResponseString, Encoding.UTF8, "application/json") })); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); var response = await sut.GetRepositoryEntities("repositoryUrl"); var returnedRepository = response.FirstOrDefault(); Assert.That(returnedRepository.name == name); Assert.That(returnedRepository.stargazers_count == stargazers); }