public void Throw_Argument_Null_Exception_When_Followee_Not_Found()
        {
            // Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followee = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1TestBio1TestBio1TestBio1TestBio1", FolloweeId = "TestFolloweeId1", Name = "TestFolloweeName1"
            };
            var followeeCollection = new List <Followee> {
                followee
            };

            repoMock.Setup(r => r.All).Returns(followeeCollection.AsQueryable());
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);


            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() => sut.Update("1"));
        }
        public void Invoke_GetTwitterUserDetailsById_When_Followee_Found()
        {
            //Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followee = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1TestBio1TestBio1TestBio1TestBio1", FolloweeId = "TestFolloweeId1", Name = "TestFolloweeName1"
            };
            var followeeCollection = new List <Followee> {
                followee
            };

            repoMock.Setup(r => r.All).Returns(followeeCollection.AsQueryable());
            twitterApiCallServiceMock.Setup(x => x.GetTwitterUserDetailsById(It.IsAny <string>())).Returns(new FolloweeFromApiDto());
            repoMock.Setup(s => s.Update(It.IsAny <Followee>())).Verifiable();
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);


            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act
            sut.Update(followee.FolloweeId);

            //Assert
            twitterApiCallServiceMock.Verify(v => v.GetTwitterUserDetailsById(It.IsAny <string>()), Times.Once);
        }
        public void Returns_False_If_Followee_Doesnt_Exist_In_Db()
        {
            //Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followee = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1TestBio1TestBio1TestBio1TestBio1", FolloweeId = "TestFolloweeId1", Name = "TestFolloweeName1"
            };
            var followeeCollection = new List <Followee> {
                followee
            };

            repoMock.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable()).Verifiable();
            unitOfWorkMock.Setup(u => u.Followees.AllAndDeleted).Returns(repoMock.Object.AllAndDeleted);


            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);
            var exists = unitOfWorkMock.Object.Followees.AllAndDeleted.Any(x => x.FolloweeId == "1");

            //Act & Assert
            Assert.IsFalse(exists);
        }
Exemple #4
0
        public void Throws_ArgumentNullException_When_Called_With_StringEmpty_FolloweeId()
        {
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followees = new List <Followee>
            {
                new Followee
                {
                    FolloweeId = "1",
                    ScreenName = "justinT",
                    Name       = "Justin Trudeau"
                }
            };

            mapperMock.Setup(x =>
                             x.MapTo <FolloweeDto>(followees[0]))
            .Returns(new FolloweeDto {
                FolloweeId = followees[0].FolloweeId
            });

            repoMock.Setup(r => r.All).Returns(followees.AsQueryable());
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);

            var followeeService = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                                      twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            Assert.ThrowsException <ArgumentException>(() => followeeService.GetFolloweeById(string.Empty));
        }
Exemple #5
0
        public void ReturnFollowee_WhenInvokedAnExistingInDbFolloweeId()
        {
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followees = new List <Followee>
            {
                new Followee
                {
                    FolloweeId = "1",
                    ScreenName = "justinT",
                    Name       = "Justin Trudeau"
                }
            };

            mapperMock.Setup(x =>
                             x.MapTo <FolloweeDto>(followees[0]))
            .Returns(new FolloweeDto {
                FolloweeId = followees[0].FolloweeId
            });

            repoMock.Setup(r => r.All).Returns(followees.AsQueryable());
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);

            var followeeService = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                                      twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            var cut = followeeService.GetFolloweeById("1");

            Assert.AreEqual("1", cut.FolloweeId);
        }
Exemple #6
0
        public void Invoke_SaveChanges_When_Followee_Exists()
        {
            //Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followee = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1TestBio1TestBio1TestBio1TestBio1", FolloweeId = "TestFolloweeId1", Name = "TestFolloweeName1"
            };
            var followeeCollection = new List <Followee> {
                followee
            };

            repoMock.Setup(r => r.All).Returns(followeeCollection.AsQueryable());
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);

            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act
            sut.Delete(followee.FolloweeId);

            //Assert
            unitOfWorkMock.Verify(v => v.SaveChanges(), Times.Once);
        }
Exemple #7
0
        public void NotReturnNull_When_FolloweeServiceCalled()
        {
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var mapperMock                = new Mock <IMappingProvider>();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followeeService = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                                      twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            Assert.IsNotNull(followeeService);
        }
        public void Invokes_SaveChanges_When_Followee_Is_Created()
        {
            // Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var followeeFromApi = new FolloweeFromApiDto()
            {
                FolloweeId     = "1",
                Name           = "FolloweeName",
                Url            = "SomeUrl",
                FollowersCount = 10,
                FriendsCount   = 5,
                FolloweeOriginallyCreatedOn = "29/04/2018",
                FavoritesCount = 5,
                StatusesCount  = 100
            };

            var followee = new Followee()
            {
                FolloweeId = followeeFromApi.FolloweeId,
                Bio        = followeeFromApi.Bio,
                ScreenName = followeeFromApi.ScreenName,
                Name       = followeeFromApi.Name,
                FolloweeOriginallyCreatedOn = DateTime.Now,
                Url            = followeeFromApi.Url,
                FavoritesCount = followeeFromApi.FavoritesCount,
                FollowersCount = followeeFromApi.FollowersCount,
                FriendsCount   = followeeFromApi.FriendsCount,
                StatusesCount  = followeeFromApi.StatusesCount
            };

            var followeeCollection = new List <Followee> {
                followee
            };

            repoMock.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable());
            unitOfWorkMock.Setup(u => u.Followees).Returns(repoMock.Object);
            unitOfWorkMock.Setup(u => u.Followees.Add(It.IsAny <Followee>())).Verifiable();

            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act
            var followeeToAdd = sut.Create(followeeFromApi);

            //Assert
            unitOfWorkMock.Verify(v => v.SaveChanges(), Times.Once);
        }
        public void Throw_Argument_Null_Exception_When_Followee_Is_Null()
        {
            //Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <Followee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() => sut.Create(null));
        }
Exemple #10
0
        public void Throw_Argument_Exception_When_UserId_Is_Empty()
        {
            //Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <UserFollowee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act & Assert
            Assert.ThrowsException <ArgumentException>(() => sut.GetAllFolloweesByUserId(""));
        }
Exemple #11
0
        public void ReturnAllFolloweesForUser_WhenInvokedAnExistingInDbUserId()
        {
            // Arrange
            var mapperMock                = new Mock <IMappingProvider>();
            var unitOfWorkMock            = new Mock <IUnitOfWork>();
            var repoMock                  = new Mock <IGenericRepository <UserFollowee> >();
            var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>();
            var dateTimeParserMock        = new Mock <IDateTimeParser>();

            var testUser1 = new User {
                UserName = "******", Id = "TestId1"
            };
            var testUser2 = new User {
                UserName = "******", Id = "TestId2"
            };

            var testFollowee1 = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1TestBio1TestBio1TestBio1TestBio1", FolloweeId = "TestFolloweeId1", Name = "TestFolloweeName1"
            };
            var testFollowee2 = new Followee {
                ScreenName = "TestScreenName2", Bio = "TestBio2TestBio2TestBio2TestBio2TestBio2", FolloweeId = "TestFolloweeId2", Name = "TestFolloweeName2"
            };
            var testFollowee3 = new Followee {
                ScreenName = "TestScreenName3", Bio = "TestBio3TestBio3TestBio3TestBio3TestBio3", FolloweeId = "TestFolloweeId3", Name = "TestFolloweeName3"
            };


            var testUserFollowee1 = new UserFollowee {
                FolloweeId = testFollowee1.FolloweeId, Followee = testFollowee1, UserId = testUser1.Id, User = testUser1
            };
            var testUserFollowee2 = new UserFollowee {
                FolloweeId = testFollowee2.FolloweeId, Followee = testFollowee2, UserId = testUser1.Id, User = testUser1
            };
            var testUserFollowee3 = new UserFollowee {
                FolloweeId = testFollowee3.FolloweeId, Followee = testFollowee3, UserId = testUser2.Id, User = testUser2
            };

            var userFolloweesCollectionMock = new List <UserFollowee> {
                testUserFollowee1, testUserFollowee2, testUserFollowee3
            };

            repoMock.Setup(r => r.All).Returns(userFolloweesCollectionMock.AsQueryable());
            unitOfWorkMock.Setup(u => u.UserFollowees).Returns(repoMock.Object);

            var savedFollowee1 = new FolloweeDisplayListDto
            {
                FolloweeId = testUserFollowee1.Followee.FolloweeId,
                Bio        = testUserFollowee1.Followee.Bio.Substring(0, 25) + "...",
                FolloweeOriginallyCreatedOn = testUserFollowee1.Followee.FolloweeOriginallyCreatedOn,
                ScreenName = testUserFollowee1.Followee.ScreenName,
                Name       = testUserFollowee1.Followee.Name
            };
            var savedFollowee2 = new FolloweeDisplayListDto
            {
                FolloweeId = testUserFollowee2.Followee.FolloweeId,
                ScreenName = testUserFollowee2.Followee.ScreenName,
                Bio        = testUserFollowee2.Followee.Bio.Substring(0, 25) + "...",
                FolloweeOriginallyCreatedOn = testUserFollowee2.Followee.FolloweeOriginallyCreatedOn,
                Name = testUserFollowee2.Followee.Name
            };


            var expectedResult = new List <FolloweeDisplayListDto> {
                savedFollowee1, savedFollowee2
            };

            var sut = new FolloweeService(unitOfWorkMock.Object, mapperMock.Object,
                                          twitterApiCallServiceMock.Object, dateTimeParserMock.Object);

            //Act
            var actualResult = sut.GetAllFolloweesByUserId("TestId1");

            //Assert
            Assert.AreEqual(2, actualResult.Count);
        }