public void ThrowArgumentException_WhenJsonResponseIsEmptyString() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string screenName = "Elon Musk"; var resourceUrl = "https://api.twitter.com/1.1/users/show.json?screen_name="; var jsonResponse = string.Empty; var expectedResult = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + screenName, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <TwitterAccountApiDto>(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentException>(async() => await twitterService.GetUserByScreenName(screenName)); }
public async Task CallGetJsonDeserializerMethodOnce_WhenInvokedWithValidParameters() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string screenName = "Elon Musk"; var resourceUrl = "https://api.twitter.com/1.1/users/show.json?screen_name="; var jsonResponse = "JsonResponse"; var expectedResult = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + screenName, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <TwitterAccountApiDto>(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act var actualResult = await twitterService.GetUserByScreenName(screenName); //Assert jsonDeserializerMock.Verify(x => x.Deserialize <TwitterAccountApiDto>(jsonResponse), Times.Once); }
public void ThrowArgumentException_WhenInvokedWithEmptyIdInvalidParameters() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string id = string.Empty; var resourceUrl = "https://api.twitter.com/1.1/users/show.json?user_id="; var jsonResponse = "JsonResponse"; var expectedResult = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + id, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <TwitterAccountApiDto>(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentException>(async() => await twitterService.GetUserById(id)); }
public async Task ReturnTwitterAcountObject_WhenInvokedWithValidParameter() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); var screenName = "Elon Musk"; var resourceUrl = "https://api.twitter.com/1.1/users/show.json?screen_name="; var jsonResponse = "JsonResponse"; var expectedResult = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + screenName, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <TwitterAccountApiDto>(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act var actualResult = await twitterService.GetUserByScreenName(screenName); //Assert Assert.IsNotNull(actualResult); Assert.IsInstanceOfType(actualResult, typeof(TwitterAccountApiDto)); Assert.AreEqual(actualResult.Name, expectedResult.Name); }
public async Task CallGetTwitterApiCallDataMethodOnce_WhenInvokedWithValidParameters() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string screenName = "Grigor"; var resourceUrl = "https://api.twitter.com/1.1/users/search.json?q="; var jsonResponse = "JsonResponse"; var twitterAccount = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; var expectedResult = new List <TwitterAccountApiDto> { twitterAccount }; apiServiceMock .Setup(x => x.GetTwitterApiCallData($"{resourceUrl}{screenName}&count=20", null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <ICollection <TwitterAccountApiDto> >(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act var actualResult = await twitterService.SearchUsersByScreenName(screenName); //Assert apiServiceMock.Verify(x => x.GetTwitterApiCallData($"{resourceUrl}{screenName}&count=20", null), Times.Once); }
public void ThrowArgumentException_WhenJsonResponseIsEmptyString() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string screenName = "Grigor"; var resourceUrl = "https://api.twitter.com/1.1/users/search.json?q="; var jsonResponse = string.Empty; var twitterAccount = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; var expectedResult = new List <TwitterAccountApiDto> { twitterAccount }; apiServiceMock .Setup(x => x.GetTwitterApiCallData($"{resourceUrl}{screenName}&count=20", null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <ICollection <TwitterAccountApiDto> >(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentException>(async() => await twitterService.SearchUsersByScreenName(screenName)); }
public async Task ReturnCollectionOfTwitterAcounts_WhenInvokedWithValidParameter() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); var screenName = "Grigor"; var resourceUrl = "https://api.twitter.com/1.1/users/search.json?q="; var jsonResponse = "JsonResponse"; var twitterAccount = new TwitterAccountApiDto() { Name = "Marto Stamatov" }; ICollection <TwitterAccountApiDto> expectedResult = new List <TwitterAccountApiDto> { twitterAccount }; apiServiceMock .Setup(x => x.GetTwitterApiCallData($"{resourceUrl}{screenName}&count=20", null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <ICollection <TwitterAccountApiDto> >(jsonResponse)) .Returns(expectedResult); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act var actualResult = await twitterService.SearchUsersByScreenName(screenName); //Assert Assert.IsNotNull(actualResult); Assert.IsInstanceOfType(actualResult, typeof(ICollection <TwitterAccountApiDto>)); }
public async Task <bool> AddTwitterAccountToUser(TwitterAccountApiDto twitterAccountApiDto, string userId) { Guard.WhenArgument(twitterAccountApiDto, "Twitter AccountApiDto").IsNull().Throw(); Guard.WhenArgument(userId, "User Id").IsNullOrEmpty().Throw(); var twitterAccountToBeAdded = this.MappingProvider.MapTo <TwitterAccount>(twitterAccountApiDto); Guard.WhenArgument(twitterAccountToBeAdded, "Twitter Account to be Added").IsNull().Throw(); twitterAccountToBeAdded.ImageUrl = twitterAccountToBeAdded.ImageUrl?.Replace("_normal", string.Empty); //this.UserRepository.IncludeFavoriteTwitterAccounts(); var checkIfTwitterAccountExists = await this.twitterAccountRepository.Get(twitterAccountToBeAdded.Id); if (checkIfTwitterAccountExists == null) { this.twitterAccountRepository.Add(twitterAccountToBeAdded); await this.UnitOfWork.SaveChangesAsync(); } var user = await this.UserRepository.Get(userId); Guard.WhenArgument(user, "User").IsNull().Throw(); //this.twitterAccountRepository.AddUserTwitterAccount(userId, twitterAccountToBeAdded); if (await this.UserRepository.TwitterAccountAddedToUser(user, twitterAccountToBeAdded)) { await this.UnitOfWork.SaveChangesAsync(); return(true); } return(false); }
public async Task CallSaveChangesOnce_WhenTwitterAccountAlreadyExistsInDatabase() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User() { Name = "Stamat" }; twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync(user); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(true); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act var actualResult = await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId); //Assert unitOfWorkMock.Verify(x => x.SaveChangesAsync(), Times.Once); }
public async Task ReturnFalse_TwitterAccountAddMethodReturnsFalse() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User(); twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync(user); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(false); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act var actualResult = await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId); //Assert Assert.IsFalse(actualResult); }
public void ThrowArgumentNullException_WhenUserRepositoryGetMethodReturnsNull() { var unitOfWorkMock = new Mock <IUnitOfWork>(); var mappingProviderMock = new Mock <IMappingProvider>(); var userRepositoryMock = new Mock <IUserRepository>(); var twitterAccountRepositoryMock = new Mock <ITwitterAccountRepository>(); string userId = "1905"; var twitterAccountToAdd = new TwitterAccountApiDto() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var twitterAccount = new TwitterAccount() { Name = "Marto Stamatov", Id = "30", ImageUrl = "SomeUrl" }; var user = new User(); twitterAccountRepositoryMock .Setup(x => x.Get(twitterAccountToAdd.Id)) .ReturnsAsync(twitterAccount); mappingProviderMock .Setup(x => x.MapTo <TwitterAccount>(twitterAccountToAdd)) .Returns(twitterAccount); userRepositoryMock .Setup(x => x.Get(userId)) .ReturnsAsync((User)null); userRepositoryMock .Setup(x => x.TwitterAccountAddedToUser(user, twitterAccount)) .ReturnsAsync(true); var twitterAccountService = new TwitterAccountService( unitOfWorkMock.Object, mappingProviderMock.Object, userRepositoryMock.Object, twitterAccountRepositoryMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await twitterAccountService.AddTwitterAccountToUser(twitterAccountToAdd, userId)); }
public async Task ReturnCollectionOfTwitterAcounts_WhenInvokedWithValidParameter() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); var favUsersIds = "100,545,6969"; var resourceUrl = "https://api.twitter.com/1.1/users/lookup.json?user_id="; var jsonResponse = "JsonResponse"; var status = new TweetApiDto() { Id = "1905", TweetAuthor = "Marto Stamatov", TweetUrl = "SomeUrl" }; var twitterAccount = new TwitterAccountApiDto() { UserName = "******", CurrentStatus = status }; ICollection <TwitterAccountApiDto> twitterAccounts = new List <TwitterAccountApiDto> { twitterAccount }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + favUsersIds, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <ICollection <TwitterAccountApiDto> >(jsonResponse)) .Returns(twitterAccounts); var expectedResult = twitterAccounts .Select(u => u.CurrentStatus) .OrderByDescending(t => t.CreatedAt) .ToList(); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act var actualResult = await twitterService.GetTimeline(favUsersIds); //Assert Assert.IsNotNull(actualResult); Assert.IsInstanceOfType(actualResult, typeof(ICollection <TweetApiDto>)); }
public void ThrowArgumentException_WhenJsonResponseIsEmptyString() { //Arrange var apiServiceMock = new Mock <IOAuthCreationService>(); var jsonDeserializerMock = new Mock <IJsonObjectDeserializer>(); string favUsersIds = "100,545,6969"; var resourceUrl = "https://api.twitter.com/1.1/users/lookup.json?user_id="; string jsonResponse = string.Empty; var status = new TweetApiDto() { Id = "1905", TweetAuthor = "Marto Stamatov", TweetUrl = "SomeUrl" }; var twitterAccount = new TwitterAccountApiDto() { UserName = "******", CurrentStatus = status }; ICollection <TwitterAccountApiDto> twitterAccounts = new List <TwitterAccountApiDto> { twitterAccount }; apiServiceMock .Setup(x => x.GetTwitterApiCallData(resourceUrl + favUsersIds, null)) .ReturnsAsync(jsonResponse); jsonDeserializerMock .Setup(x => x.Deserialize <ICollection <TwitterAccountApiDto> >(jsonResponse)) .Returns(twitterAccounts); var expectedResult = twitterAccounts .Select(u => u.CurrentStatus) .OrderByDescending(t => t.CreatedAt) .ToList(); var twitterService = new TwitterService(apiServiceMock.Object, jsonDeserializerMock.Object); //Act && Assert Assert.ThrowsExceptionAsync <ArgumentException>(async() => await twitterService.GetTimeline(favUsersIds)); }