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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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());
        }
Exemple #5
0
        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));
        }
Exemple #10
0
        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));
        }
Exemple #11
0
        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);
        }