Beispiel #1
0
        public void Return_False_When_User_Saved_This_Followee()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = new Mock <IFolloweeService>();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService.Object, fakeDateTimeProvider);

            var userFollowee = new UserFollowee {
                UserId = "123", FolloweeId = "456"
            };
            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(s => s.All).Returns(userFolloweeCollection.AsQueryable());
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            //Act
            var expectedResult = sut.AnyUserSavedThisFolloweeById("123");

            //Assert
            Assert.IsFalse(expectedResult);
        }
        public void Invoke_SaveChanges_When_UserFollowee_Exists()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = new Mock <IFolloweeService>();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService.Object, fakeDateTimeProvider);

            var userFollowee = new UserFollowee {
                UserId = "123", FolloweeId = "456"
            };
            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(s => s.All).Returns(userFolloweeCollection.AsQueryable);
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);
            fakeUnit.Setup(s => s.SaveChanges()).Verifiable();

            //Act
            sut.DeleteUserFollowee(userFollowee.UserId, userFollowee.FolloweeId);

            //Assert
            fakeUnit.Verify(v => v.SaveChanges(), Times.Once);
        }
Beispiel #3
0
        public void Return_False_When_UserFollowee_Does_Not_Exist()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = Mock.Of <IFolloweeService>();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService, fakeDateTimeProvider);

            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();

            var userFollowee = new UserFollowee {
                UserId = "123", FolloweeId = "456"
            };

            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(userFolloweeCollection.AsQueryable());
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            //Act
            var exists = sut.UserFolloweeExistsInDeleted(userFollowee.UserId, "789");

            //Assert
            Assert.IsFalse(exists);
        }
Beispiel #4
0
        public void Invoke_DeleteUserFolloweeAndEntries_In_SameMethod_When_Provided_Correct_Parameter_And_Followees_Exist()
        {
            //Arrange
            var fakeUserTweetSetvice    = Mock.Of <IUserTweetService>();
            var fakeUserFolloweeService = Mock.Of <IUserFolloweeService>();
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeFolloweeService  = Mock.Of <IFolloweeService>();
            var fakeTweetService     = Mock.Of <ITweetService>();
            var fakeTweetTagService  = Mock.Of <ITweetTagService>();
            var fakeAdminUserService = new Mock <IAdminUserService>();
            var sut = new FakeCascadeDeleteService(fakeUserTweetSetvice, fakeUserFolloweeService, fakeUnit.Object, fakeFolloweeService, fakeTweetService, fakeTweetTagService, fakeAdminUserService.Object);

            var fakeUserFolloweesRepo = new Mock <IGenericRepository <UserFollowee> >();
            var testUserFollowee      = new UserFollowee {
                UserId = "123", FolloweeId = "456"
            };
            var userFollowees = new List <UserFollowee> {
                testUserFollowee
            };

            fakeUserFolloweesRepo.Setup(r => r.All).Returns(userFollowees.AsQueryable());
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweesRepo.Object);
            fakeAdminUserService.Setup(u => u.DeleteByUserId(It.IsAny <string>())).Verifiable();

            //Act & Assert
            Assert.ThrowsException <FakeTestException>(() => sut.DeleteUserAndHisEntities("123"));
        }
        public void SaveUserFollowee(string userId, FolloweeFromApiDto followee)
        {
            if (followee == null)
            {
                throw new ArgumentNullException(nameof(followee));
            }

            if (string.IsNullOrWhiteSpace(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }

            var followeeToSaveToUser = this.unitOfWork.Followees.AllAndDeleted.FirstOrDefault(w => w.FolloweeId == followee.FolloweeId);

            if (followeeToSaveToUser == null) // if it's a new Followee, it's a new UserFollowee
            {
                followeeToSaveToUser = this.followeeService.Create(followee);
                var userFolloweeToadd = new UserFollowee {
                    UserId = userId, FolloweeId = followeeToSaveToUser.FolloweeId
                };

                this.unitOfWork.UserFollowees.Add(userFolloweeToadd);
                this.unitOfWork.SaveChanges();
            }
            else
            {
                if (followeeToSaveToUser.IsDeleted)
                {
                    followeeToSaveToUser.IsDeleted  = false;
                    followeeToSaveToUser.DeletedOn  = null;
                    followeeToSaveToUser.ModifiedOn = this.dateTimeProvider.Now;
                    this.unitOfWork.SaveChanges();
                }

                if (!this.UserFolloweeExistsInDeleted(userId, followee.FolloweeId))
                {
                    var userFolloweeToadd = new UserFollowee {
                        UserId = userId, FolloweeId = followee.FolloweeId
                    };

                    this.unitOfWork.UserFollowees.Add(userFolloweeToadd);
                    this.unitOfWork.SaveChanges();
                }
                else
                {
                    var userFolloweeToBeReadded =
                        this.unitOfWork.UserFollowees.AllAndDeleted.FirstOrDefault(a =>
                                                                                   a.FolloweeId == followee.FolloweeId && a.UserId == userId);

                    if (userFolloweeToBeReadded != null)
                    {
                        userFolloweeToBeReadded.IsDeleted  = false;
                        userFolloweeToBeReadded.DeletedOn  = null;
                        userFolloweeToBeReadded.ModifiedOn = this.dateTimeProvider.Now;
                        this.unitOfWork.SaveChanges();
                    }
                }
            }
        }
Beispiel #6
0
        public void Change_Deleted_State_When_Followee_Exists_UserFollowee_Is_Deleted()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var dateTimeProvider     = new TestDateTimeProvider();
            var fakeFolloweeService  = new Mock <IFolloweeService>();
            var fakeFolloweeRepo     = new Mock <IGenericRepository <Followee> >();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService.Object, dateTimeProvider);

            var followee = new Followee {
                FolloweeId = "789", IsDeleted = false
            };
            var userFolloweeToAdd = new FolloweeFromApiDto {
                FolloweeId = "789"
            };
            var followeeCollection = new List <Followee> {
                followee
            };
            var userFollowee = new UserFollowee {
                UserId = "456", FolloweeId = userFolloweeToAdd.FolloweeId, IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn
            };
            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(userFolloweeCollection.AsQueryable());
            fakeFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable());
            fakeUnit.Setup(u => u.Followees).Returns(fakeFolloweeRepo.Object);
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            //Act
            sut.SaveUserFollowee("456", userFolloweeToAdd);

            //Assert
            Assert.IsFalse(userFollowee.IsDeleted);
            Assert.IsNull(userFollowee.DeletedOn);
        }
Beispiel #7
0
        public void Invoke_SaveChanges_When_Followee_Exists_UserFollowee_Is_New()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = new Mock <IFolloweeService>();
            var fakeFolloweeRepo     = new Mock <IGenericRepository <Followee> >();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService.Object, fakeDateTimeProvider);

            var followee = new Followee {
                FolloweeId = "789", IsDeleted = false
            };
            var userFolloweeToAdd = new FolloweeFromApiDto {
                FolloweeId = "789"
            };
            var followeeCollection = new List <Followee> {
                followee
            };
            var userFollowee = new UserFollowee {
                UserId = "456", FolloweeId = "444"
            };
            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(userFolloweeCollection.AsQueryable());
            fakeFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable());
            fakeUnit.Setup(u => u.Followees).Returns(fakeFolloweeRepo.Object);
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            //Act
            sut.SaveUserFollowee("456", userFolloweeToAdd);

            //Assert
            fakeUnit.Verify(v => v.SaveChanges(), Times.Once);
        }
        public void Return_Correct_Value_When_Provided_Valid_Id()
        {
            //Arrange
            var fakeUnitOfWork       = new Mock <IUnitOfWork>();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var fakeTimeProvider     = new TestDateTimeProvider();

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

            var testFollowee1 = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1", FolloweeId = "TestFolloweeId1"
            };
            var testFollowee2 = new Followee {
                ScreenName = "TestScreenName2", Bio = "TestBio2", FolloweeId = "TestFolloweeId2"
            };
            var testFollowee3 = new Followee {
                ScreenName = "TestScreenName3", Bio = "TestBio3", FolloweeId = "TestFolloweeId3"
            };


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


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

            fakeUserFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(fakeUserFolloweeCollection.AsQueryable());
            fakeUnitOfWork.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            var deletedModel = new FakeDeletedFolloweesModel
            {
                DeletedOn  = testUserFollowee1.DeletedOn.Value,
                ScreenName = testUserFollowee1.Followee.ScreenName,
                Bio        = testUserFollowee1.Followee.Bio
            };


            var expectedResult = new List <FakeDeletedFolloweesModel> {
                deletedModel
            };
            var sut = new FolloweeStatisticsService(fakeUnitOfWork.Object);

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

            //Assert
            CollectionAssert.AreEqual(expectedResult, actualResult);
        }
Beispiel #9
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);
        }
Beispiel #10
0
        public void Return_Correct_Reports_When_Provided_Valid_Parameters()
        {
            //Arrange
            var fakeUnitOfWork       = new Mock <IUnitOfWork>();
            var fakeUserRepo         = new Mock <IGenericRepository <User> >();
            var fakeUserTweetRepo    = new Mock <IGenericRepository <UserTweet> >();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var fakeTimeProvider     = new TestDateTimeProvider();

            var testUser1 = new User {
                UserName = "******", Id = "TestId1", CreatedOn = fakeTimeProvider.CreatedOn, IsDeleted = true
            };
            var testUser2 = new User {
                UserName = "******", Id = "TestId2", CreatedOn = fakeTimeProvider.CreatedOn, IsDeleted = false
            };
            var fakeUserCollection = new List <User> {
                testUser1, testUser2
            };
            var testUserFollowee1 = new UserFollowee {
                User = testUser1, IsDeleted = true
            };
            var testUserFollowee2 = new UserFollowee {
                User = testUser2, IsDeleted = true
            };
            var testUserFollowee3 = new UserFollowee {
                User = testUser2, IsDeleted = false
            };
            var fakeUserFolloweeCollection = new List <UserFollowee> {
                testUserFollowee1, testUserFollowee2, testUserFollowee3
            };
            var testUserTweet1 = new UserTweet {
                User = testUser1, IsDeleted = true
            };
            var testUserTweet2 = new UserTweet {
                User = testUser2, IsDeleted = true
            };
            var testUserTweet3 = new UserTweet {
                User = testUser2, IsDeleted = false
            };
            var fakeUserTweetCollection = new List <UserTweet> {
                testUserTweet1, testUserTweet2, testUserTweet3
            };

            fakeUserRepo.Setup(r => r.AllAndDeleted).Returns(fakeUserCollection.AsQueryable());
            fakeUserTweetRepo.Setup(r => r.AllAndDeleted).Returns(fakeUserTweetCollection.AsQueryable());
            fakeUserFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(fakeUserFolloweeCollection.AsQueryable());
            fakeUnitOfWork.Setup(u => u.Users).Returns(fakeUserRepo.Object);
            fakeUnitOfWork.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object);
            fakeUnitOfWork.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            var sut = new StatisticsService(fakeUnitOfWork.Object);
            var statisticsModel1 = new FakeUserStatisticsModel
            {
                ActivelyFollowedAccountsCount = 0,
                DeletedAccountsCount          = 1,
                ActiveStatus       = "Deleted",
                UserId             = "TestId1",
                UserName           = "******",
                SavedTweetsCount   = 0,
                DeletedTweetsCount = 1,
                UserNameCreatedOn  = fakeTimeProvider.CreatedOn
            };
            var statisticsModel2 = new FakeUserStatisticsModel
            {
                ActivelyFollowedAccountsCount = 1,
                DeletedAccountsCount          = 1,
                ActiveStatus       = "Active",
                UserId             = "TestId2",
                UserName           = "******",
                SavedTweetsCount   = 1,
                DeletedTweetsCount = 1,
                UserNameCreatedOn  = fakeTimeProvider.CreatedOn
            };
            var totalStatisticsModel = new FakeTotalStatisticsModel
            {
                TotalDeletedAccountsCount = 2,
                TotalSavedTweetsCount     = 1,
                TotalDeletedTweetsCount   = 2,
                TotalUsers = 2,
                TotalActivelyFollowedAccountsCount = 1,
                TotalActiveUsers  = 1,
                TotalDeletedUsers = 1
            };
            var usesStatisticsModels = new Dictionary <string, UserStatisticsModel>
            {
                ["TestUser1"] = statisticsModel1,
                ["TestUser2"] = statisticsModel2
            };

            var expectedOutput = new FakeStatisticsScreenModel {
                TotalStatisticsModel = totalStatisticsModel, UserStatisticsModels = usesStatisticsModels.Values
            };

            //Act
            var actualOutput = sut.UsersStatistics();

            //Assert

            Assert.AreEqual(expectedOutput.TotalStatisticsModel, actualOutput.TotalStatisticsModel);
            CollectionAssert.AreEqual(expectedOutput.UserStatisticsModels.ToList(), actualOutput.UserStatisticsModels.ToList());
        }
Beispiel #11
0
        public void Return_Correct_Value_When_Provided_Valid_Id()
        {
            //Arrange
            var fakeUnitOfWork       = new Mock <IUnitOfWork>();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();

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

            var testFollowee1 = new Followee {
                ScreenName = "TestScreenName1", Bio = "TestBio1", FolloweeId = "TestFolloweeId1"
            };
            var testFollowee2 = new Followee {
                ScreenName = "TestScreenName2", Bio = "TestBio2", FolloweeId = "TestFolloweeId2"
            };
            var testFollowee3 = new Followee {
                ScreenName = "TestScreenName3", Bio = "TestBio3", FolloweeId = "TestFolloweeId3"
            };


            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 fakeUserFolloweeCollection = new List <UserFollowee> {
                testUserFollowee1, testUserFollowee2, testUserFollowee3
            };

            fakeUserFolloweeRepo.Setup(r => r.All).Returns(fakeUserFolloweeCollection.AsQueryable());
            fakeUnitOfWork.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);

            var savedModel1 = new FakeActivelyFollowingModel
            {
                FolloweeId = testUserFollowee1.FolloweeId,
                ScreenName = testUserFollowee1.Followee.ScreenName,
                Bio        = testUserFollowee1.Followee.Bio
            };
            var savedModel2 = new FakeActivelyFollowingModel
            {
                FolloweeId = testUserFollowee2.FolloweeId,
                ScreenName = testUserFollowee2.Followee.ScreenName,
                Bio        = testUserFollowee2.Followee.Bio
            };

            var expectedResult = new List <FakeActivelyFollowingModel> {
                savedModel1, savedModel2
            };
            var sut = new FolloweeStatisticsService(fakeUnitOfWork.Object);

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

            //Assert
            CollectionAssert.AreEqual(expectedResult, actualResult);
        }