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 GetRepositoryEntities_LogsErrors_WhenclientThrowsExceptions(string errorMessage) { var mockHttpClient = new Mock <IHttpClient>(); var mockLogger = new Mock <ILogger>(MockBehavior.Strict); mockHttpClient.Setup(e => e.GetAsync(It.IsAny <string>())).Throws(new Exception(errorMessage)); mockLogger.Setup(e => e.Error(It.IsAny <Exception>(), "repoUrl")).Verifiable(); var sut = new GitHubAPIDataRepository(mockHttpClient.Object, mockLogger.Object); Assert.ThrowsAsync <Exception>(async() => await sut.GetRepositoryEntities("repoUrl")); mockLogger.Verify(e => e.Error(It.IsAny <Exception>(), "repoUrl"), Times.Once); }
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); }