예제 #1
0
        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);
        }
예제 #2
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);
        }
예제 #3
0
        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);
        }