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); }
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); }
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(); } } } }
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); }
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); }
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); }
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()); }
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); }