public Followee Create(FolloweeFromApiDto followee) { if (followee == null) { throw new ArgumentNullException("Followee cannot be null!"); } Followee followeeToAdd = new Followee { FolloweeId = followee.FolloweeId, Bio = followee.Bio, ScreenName = followee.ScreenName, Name = followee.Name, FolloweeOriginallyCreatedOn = dateTimeParser.ParseFromTwitter(followee.FolloweeOriginallyCreatedOn), Url = followee.Url, FavoritesCount = followee.FavoritesCount, FollowersCount = followee.FollowersCount, FriendsCount = followee.FriendsCount, StatusesCount = followee.StatusesCount }; this.unitOfWork.Followees.Add(followeeToAdd); this.unitOfWork.SaveChanges(); return(followeeToAdd); }
public void Invoke_Add_In_UserFolloweeRepo_When_Followee_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 = "456" }; var userFolloweeToAdd = new FolloweeFromApiDto { FolloweeId = "789" }; var followeeCollection = new List <Followee> { followee }; fakeFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable()); fakeUnit.Setup(u => u.Followees).Returns(fakeFolloweeRepo.Object); fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object); fakeFolloweeService.Setup(s => s.Create(userFolloweeToAdd)).Returns(new Followee { FolloweeId = userFolloweeToAdd.FolloweeId }); //Act sut.SaveUserFollowee("123", userFolloweeToAdd); //Assert fakeUserFolloweeRepo.Verify(v => v.Add(It.IsAny <UserFollowee>()), Times.Once()); }
public IActionResult SearchResult(SearchViewModel model) { if (this.ModelState.IsValid) { var result = new FolloweeFromApiDto[0]; try { result = twitterApiCallService.GetTwitterUsersByScreenName(model.SearchInput); } catch (Exception e) { return(this.View("NotFound")); } if (result.Length < 1) { TempData["Not-Found-Message"] = $"No results found matching {model.SearchInput}"; return(RedirectToAction("Search")); } var vm = new SearchResultsViewModel { SearchResults = result }; return(this.View(vm)); } return(this.View()); }
public void Invoke_SaveChanges_When_Followee_Exists_But_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 = true, DeletedOn = dateTimeProvider.DeletedOn }; var userFolloweeToAdd = new FolloweeFromApiDto { FolloweeId = "789" }; var followeeCollection = new List <Followee> { followee }; fakeFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable()); fakeUnit.Setup(u => u.Followees).Returns(fakeFolloweeRepo.Object); fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object); fakeUnit.Setup(s => s.SaveChanges()).Verifiable(); //Act sut.SaveUserFollowee("456", userFolloweeToAdd); //Assert fakeUnit.Verify(v => v.SaveChanges(), Times.Exactly(2)); // once for saving the changes of Deleted state and once for the UserFollowee }
public void Invoke_UserFolloweeExistsInDeleted_In_Same_Method_When_Followee_Exists() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeFolloweeService = new Mock <IFolloweeService>(); var fakeFolloweeRepo = new Mock <IGenericRepository <Followee> >(); var sut = new FakeUserFolloweeService(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 }; fakeFolloweeRepo.Setup(r => r.AllAndDeleted).Returns(followeeCollection.AsQueryable()); fakeUnit.Setup(u => u.Followees).Returns(fakeFolloweeRepo.Object); //Act && Assert Assert.ThrowsException <FakeTestException>(() => sut.SaveUserFollowee("456", userFolloweeToAdd)); }
public void Change_DeletedOn_When_Followee_Exist_But_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 = true, DeletedOn = dateTimeProvider.DeletedOn }; var userFolloweeToAdd = new FolloweeFromApiDto { FolloweeId = "789" }; var followeeCollection = new List <Followee> { followee }; 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.AreEqual(dateTimeProvider.Now, followee.ModifiedOn.Value); }
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 Throw_Argument_Null_Exception_When_UserId_Is_Null() { //Arrange var fakeUnit = Mock.Of <IUnitOfWork>(); var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeFolloweeService = Mock.Of <IFolloweeService>(); var followee = new FolloweeFromApiDto(); var sut = new UserFolloweeService(fakeUnit, fakeFolloweeService, fakeDateTimeProvider); //Act & Assert Assert.ThrowsException <ArgumentNullException>(() => sut.DeleteUserFollowee(null, "123")); }
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 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 IActionResult FolloweeDetails(string id) { FolloweeFromApiDto followee = new FolloweeFromApiDto(); try { followee = this.twitterApiCallService.GetTwitterUserDetailsById(id); } catch (Exception e) { return(this.View("NotFound")); } if (followee != null) { return(this.View(followee)); } else { return(this.View("NotFound")); } }
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); }