public void Return_False_When_No_User_Saved_This_Tweet() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var userTweet = new UserTweet { UserId = "123", TweetId = "456" }; var userTweetCollection = new List <UserTweet> { userTweet }; fakeUserTweetRepo.Setup(s => s.All).Returns(userTweetCollection.AsQueryable()); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); //Act var expectedResult = sut.AnyUserSavedThisTweetById("7777"); //Assert Assert.IsFalse(expectedResult); }
public void Invoke_SaveChanges_On_UnitOfWork_When_Found() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeTweetService = Mock.Of <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService, fakeDateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var userTweet = new UserTweet { TweetId = "789", UserId = "123" }; var userTweetCollection = new List <UserTweet> { userTweet }; fakeUserTweetRepo.Setup(r => r.All).Returns(userTweetCollection.AsQueryable()); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeUnit.Setup(s => s.SaveChanges()).Verifiable(); //Act sut.DeleteUserTweet("123", "789"); //Assert fakeUnit.Verify(v => v.SaveChanges(), Times.Once); }
public void Return_False_When_UserTweet_Does_Not_Exist() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeTweetService = Mock.Of <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService, fakeDateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var userTweet = new UserTweet { UserId = "123", TweetId = "456" }; var userTweetCollection = new List <UserTweet> { userTweet }; fakeUserTweetRepo.Setup(r => r.All).Returns(userTweetCollection.AsQueryable()); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); //Act var exists = sut.UserTweetExists(userTweet.UserId, "666"); //Assert Assert.IsFalse(exists); }
public void Invoke_Add_In_UserTweetRepo_When_Tweet_Is_New() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, fakeDateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var tweet = new Tweet { TweetId = "456" }; var tweetCollection = new List <Tweet> { tweet }; fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); fakeTweetService.Setup(s => s.CreateFromApiById(It.IsAny <string>())).Returns(new Tweet { TweetId = "789" }); //Act sut.SaveSingleTweetToUserByTweetId("123", "789"); //Assert fakeUserTweetRepo.Verify(v => v.Add(It.IsAny <UserTweet>()), Times.Once()); }
public void Return_Correct_Values_When_UserTweets_Exist() { //Arrange var timeProvider = new TestDateTimeProvider(); var fakeUnit = new Mock <IUnitOfWork>(); var fakeTweetService = Mock.Of <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService, timeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var testTweet1 = new Tweet { Text = "test1", TweetId = "10", OriginalTweetCreatedOn = timeProvider.OriginallyCreatedOn, FolloweeId = "666" }; var testTweet2 = new Tweet { Text = "test2", TweetId = "11", OriginalTweetCreatedOn = timeProvider.OriginallyCreatedOn, FolloweeId = "666" }; var testTweet3 = new Tweet { Text = "test3", TweetId = "12", OriginalTweetCreatedOn = timeProvider.OriginallyCreatedOn, FolloweeId = "789" }; var testUserTweet1 = new UserTweet { UserId = "100", Tweet = testTweet1, TweetId = testTweet1.TweetId }; var testUserTweet2 = new UserTweet { UserId = "100", Tweet = testTweet2, TweetId = testTweet2.TweetId }; var testUserTweet3 = new UserTweet { UserId = "100", Tweet = testTweet3, TweetId = testTweet3.TweetId }; var userTweetCollection = new List <UserTweet> { testUserTweet1, testUserTweet2, testUserTweet3 }; fakeUserTweetRepo.Setup(r => r.All).Returns(userTweetCollection.AsQueryable()); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); var expectedTweet1 = new FakeTweetDto { TweetId = testTweet1.TweetId, OriginalTweetCreatedOn = testTweet1.OriginalTweetCreatedOn, Text = testTweet1.Text, UsersMentioned = testTweet1.UsersMentioned }; var expectedTweet2 = new FakeTweetDto { TweetId = testTweet2.TweetId, OriginalTweetCreatedOn = testTweet2.OriginalTweetCreatedOn, Text = testTweet2.Text, UsersMentioned = testTweet2.UsersMentioned }; var expectedTweetDtos = new List <FakeTweetDto> { expectedTweet1, expectedTweet2 }; //Act var actualTweetDtos = sut.GetTweetsByUserIdAndFolloweeId("100", "666"); //Assert CollectionAssert.AreEqual(expectedTweetDtos, actualTweetDtos.ToList()); }
public void Invoke_SaveChanges_In_UnitOfWork_When_Tweet_Exist() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var tweet = new Tweet { TweetId = "456" }; var tweetCollection = new List <Tweet> { tweet }; fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); fakeUnit.Setup(u => u.SaveChanges()).Verifiable(); //Act sut.SaveSingleTweetToUserByTweetId("123", "456"); //Assert fakeUnit.Verify(v => v.SaveChanges(), Times.Once); }
public void Invoke_SaveChanges_When_Tweet_Exists_But_Deleted() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var fakeTweetTagRepo = new Mock <IGenericRepository <TweetTag> >(); var tweet = new Tweet { TweetId = "456", IsDeleted = true }; var tweetCollection = new List <Tweet> { tweet }; var tweetTagCollection = new List <TweetTag>(); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeUnit.Setup(u => u.TweetTags).Returns(fakeTweetTagRepo.Object); fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeTweetTagRepo.Setup(r => r.AllAndDeleted).Returns(tweetTagCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); fakeUnit.Setup(s => s.SaveChanges()).Verifiable(); //Act sut.SaveSingleTweetToUserByTweetId("123", "456"); //Assert fakeUnit.Verify(v => v.SaveChanges(), Times.Exactly(2)); //Once for the Modified/Deleted and twice for the UserTweet }
public void Change_DeletedOn_When_Tweet_Exist_But_Deleted() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var fakeTweetTagRepo = new Mock <IGenericRepository <TweetTag> >(); var tweet = new Tweet { TweetId = "456", IsDeleted = true }; var tweetCollection = new List <Tweet> { tweet }; var tweetTagCollection = new List <TweetTag>(); fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeUnit.Setup(u => u.TweetTags).Returns(fakeTweetTagRepo.Object); fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeTweetTagRepo.Setup(r => r.AllAndDeleted).Returns(tweetTagCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); //Act sut.SaveSingleTweetToUserByTweetId("123", "456"); //Assert Assert.AreEqual(dateTimeProvider.Now, tweet.ModifiedOn.Value); }
public void Throw_Argument_Null_Exception_When_TweetId_Is_Null() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); //Act & Assert Assert.ThrowsException <ArgumentNullException>(() => sut.AnyUserSavedThisTweetById(null)); }
public void Throw_Argument_Null_Exception_When_TweetId_Is_Null() { //Arrange var fakeTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeUnit = Mock.Of <IUnitOfWork>(); var fakeTweetService = Mock.Of <ITweetService>(); var sut = new UserTweetService(fakeUnit, fakeTweetService, fakeTimeProvider); //Act & Assert Assert.ThrowsException <ArgumentNullException>(() => sut.DeleteUserTweet("123", null)); }
public void Throw_Argument_Null_Exception_When_UserId_Is_Null() { //Arrange var fakeTimeProvider = Mock.Of <IDateTimeProvider>(); var fakeUnit = Mock.Of <IUnitOfWork>(); var fakeTweetService = Mock.Of <ITweetService>(); var sut = new UserTweetService(fakeUnit, fakeTweetService, fakeTimeProvider); //Act & Assert Assert.ThrowsException <ArgumentNullException>(() => sut.GetTweetsByUserIdAndFolloweeId(null, "123")); }
public void Change_Deleted_State_Of_Tag_When_Tweet_Exist_But_Deleted() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new UserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var fakeTweetTagRepo = new Mock <IGenericRepository <TweetTag> >(); var tweet = new Tweet { TweetId = "456", IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn }; var tweetCollection = new List <Tweet> { tweet }; var testTag1 = new Tag { Id = 1, IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn }; var testTag2 = new Tag { Id = 2, IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn }; var testTweetTag1 = new TweetTag { TweetId = tweet.TweetId, TagId = testTag1.Id, Tag = testTag1, IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn }; var testTweetTag2 = new TweetTag { TweetId = tweet.TweetId, TagId = testTag2.Id, Tag = testTag2, IsDeleted = true, DeletedOn = dateTimeProvider.DeletedOn }; var tweetTagCollection = new List <TweetTag> { testTweetTag1, testTweetTag2 }; fakeUnit.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); fakeUnit.Setup(u => u.TweetTags).Returns(fakeTweetTagRepo.Object); fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeTweetTagRepo.Setup(r => r.AllAndDeleted).Returns(tweetTagCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); //Act sut.SaveSingleTweetToUserByTweetId("123", "456"); //Assert Assert.IsFalse(testTag1.IsDeleted); Assert.IsNull(testTag1.DeletedOn); Assert.IsFalse(testTag2.IsDeleted); Assert.IsNull(testTag2.DeletedOn); }