public async Task GetGithubUser_ThrowsOnNullOrEmptyArgument() { Mock <IDataContext> dataContextMock = new Mock <IDataContext>(); IGithubUserService service = new GithubUserService(null, dataContextMock.Object, null); await Assert.ThrowsAsync <ArgumentException>(async() => await service.GetGithubUser(null)); }
public async Task GetGithubUser_ReturnsCorrectlyMappedObject_WhenRepositoryReturnsEntities() { var mockLogger = new Mock <ILogger>(MockBehavior.Strict); var mockRepository = new Mock <IGitHubDataRepository>(); var repos = GetRepositoryEntities(); var user = GetTestUserEntity(); mockRepository.Setup(e => e.GetUserEntity(It.IsAny <string>())) .Returns(Task.FromResult(user)); mockRepository.Setup(e => e.GetRepositoryEntities(It.IsAny <string>())) .Returns(Task.FromResult(repos)); var sut = new GithubUserService(mockRepository.Object, mockLogger.Object); var response = await sut.GetGithubUser("gitHandle"); // test mapping Assert.That(response.Username == user.login); Assert.That(response.Avatar == user.avatar_url); Assert.That(response.Location == user.location); // limit stargazers to top 5 Assert.That(response.Repositories.Count() == 5); // Make sure that the top 5 were took Assert.That(response.Repositories.Min(e => e.StarGazers) == 5); }
public async Task GetGithubUser_ReturnsNull_WhenUserResponseIsNull() { var mockLogger = new Mock <ILogger>(MockBehavior.Strict); var mockRepository = new Mock <IGitHubDataRepository>(); var sut = new GithubUserService(mockRepository.Object, mockLogger.Object); var response = await sut.GetGithubUser("gitHandle"); Assert.IsNull(response); }
public async Task GetGithubUser_LogsErrorsAndDoesNotThrow_WhenRepositoryThrowsExceptions() { var mockLogger = new Mock <ILogger>(MockBehavior.Strict); var mockRepository = new Mock <IGitHubDataRepository>(); mockRepository.Setup(e => e.GetUserEntity(It.IsAny <string>())).Throws(new Exception()); mockLogger.Setup(e => e.Error(It.IsAny <Exception>(), "gitHandle")).Verifiable(); var sut = new GithubUserService(mockRepository.Object, mockLogger.Object); var response = await sut.GetGithubUser("gitHandle"); Assert.DoesNotThrowAsync(async() => await sut.GetGithubUser("gitHandle")); mockLogger.Verify(e => e.Error(It.IsAny <Exception>(), "gitHandle")); }
public async Task GetGithubUser_GetFromGithub() { Mock <IDataContext> dataContextMock = new Mock <IDataContext>(); dataContextMock.Setup(x => x.GetGithubUser(It.IsAny <string>())).Returns(Task.FromResult <GithubUser>(null)); dataContextMock.Setup(x => x.SaveGithubUser(It.IsAny <GithubUser>())); Mock <IGithubClient> githubClientMock = new Mock <IGithubClient>(); githubClientMock.Setup(x => x.GetUser(It.IsAny <string>())).Returns(Task.FromResult(new GithubUser { Id = 1, Login = "******" })); IGithubUserService service = new GithubUserService(null, dataContextMock.Object, githubClientMock.Object); GithubUser user = await service.GetGithubUser("horvayev"); dataContextMock.Verify(x => x.GetGithubUser(It.IsAny <string>()), Times.Once()); dataContextMock.Verify(x => x.SaveGithubUser(It.IsAny <GithubUser>()), Times.Once()); githubClientMock.Verify(x => x.GetUser(It.IsAny <string>()), Times.Once()); }
public BusinessContext(IDataContext dataContext) { DataContext = dataContext; GithubUserService = new GithubUserService(this, DataContext, new Github.GithubClient()); EmptyService = new EmtyService(this, DataContext); }