コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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>));
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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));
        }
コード例 #12
0
        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>));
        }
コード例 #13
0
        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));
        }