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 Meters_Are_Checked_In_Desired_Time() { //Sets current time to 2016/05/05 21:34:00 var dateTimeMock = new TestDateTimeProvider(new DateTime(2016, 5, 5, 21, 34, 00)); var meterLoader = new Mock <IAmActiveMetersLoader>(); var sut = new SystemTimeDependendProductionCode(meterLoader.Object); sut.DoPeriodicCheckIfNeeded(); //System check should occur after 22:00, so at 21:34 there should //be no invocations of ReloadAllActiveMeters meterLoader.Verify(x => x.ReloadAllActiveMeters(), Times.Exactly(0)); //We're moving time forward, to the threshold hour: 22:00 dateTimeMock.Now = new DateTime(2016, 5, 5, 22, 00, 00); sut.DoPeriodicCheckIfNeeded(); //Still, no invocation should occur meterLoader.Verify(x => x.ReloadAllActiveMeters(), Times.Exactly(0)); //Minute after 22:00 dateTimeMock.Now = new DateTime(2016, 5, 5, 22, 01, 00); sut.DoPeriodicCheckIfNeeded(); //Method should be called meterLoader.Verify(x => x.ReloadAllActiveMeters(), Times.Exactly(1)); }
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 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 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_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 Change_DeletedOn_When_Tag_Exist_But_Deleted() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var fakeDateTimeProvider = new TestDateTimeProvider(); var sut = new TagService(fakeUnit.Object, fakeDateTimeProvider); var fakeTagRepo = new Mock <IGenericRepository <Tag> >(); var tag = new Tag { Text = "Pesho", IsDeleted = true, Id = 12, DeletedOn = fakeDateTimeProvider.DeletedOn }; var tagsCollection = new List <Tag> { tag }; fakeTagRepo.Setup(r => r.AllAndDeleted).Returns(tagsCollection.AsQueryable()); fakeUnit.Setup(u => u.Tags).Returns(fakeTagRepo.Object); //Act var tagFound = sut.FindOrCreate("Pesho"); //Assert Assert.AreEqual(fakeDateTimeProvider.Now, tagFound.ModifiedOn.Value); }
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 TestMongoExtractionMessageHeaderDoc_FromMessageHeader() { Guid guid = Guid.NewGuid(); Guid p1 = Guid.NewGuid(); Guid p2 = Guid.NewGuid(); const long unixTimeNow = 1234; var dateTimeProvider = new TestDateTimeProvider(); var header = new MessageHeader { MessageGuid = guid, ProducerExecutableName = "TestFromMessageHeader", ProducerProcessID = 1234, Parents = new[] { p1, p2 }, OriginalPublishTimestamp = unixTimeNow, }; MongoExtractionMessageHeaderDoc doc = MongoExtractionMessageHeaderDoc.FromMessageHeader(guid, header, dateTimeProvider); var expected = new MongoExtractionMessageHeaderDoc( guid, guid, "TestFromMessageHeader", 1234, DateTime.UnixEpoch + TimeSpan.FromSeconds(unixTimeNow), $"{p1}->{p2}", dateTimeProvider.UtcNow() ); Assert.AreEqual(expected, doc); }
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 Open_DoorWillBeClosed() { var timeProvider = new TestDateTimeProvider(); var door = new Door(1, timeProvider); door.Open(); timeProvider.CurreTime = timeProvider.CurreTime.AddSeconds(1); Assert.AreEqual(false, door.IsOpened); }
public void Open_DoorWillOpening() { var timeProvider = new TestDateTimeProvider(); var door = new Door(1, timeProvider); door.Open(); timeProvider.CurreTime = timeProvider.CurreTime.AddMilliseconds(0.5f); Assert.AreEqual(true, door.IsOpened); }
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 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); }
public void Invoke_AddTweetTagByTweetIdTagId_In_TweetTagService_When_Provided_Valid_Parameters_Tags_Are_2() { //Arrange var unitOfWorkMock = new Mock <IUnitOfWork>(); var mapperMock = new Mock <IMappingProvider>(); var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>(); var tweetTagServiceMock = new Mock <ITweetTagService>(); var tagServiceMock = new Mock <ITagService>(); var dateTimeParserMock = new Mock <IDateTimeParser>(); var dateTimeProvider = new TestDateTimeProvider(); var dateOfTweet = dateTimeProvider.Now; var sut = new TweetService(mapperMock.Object, unitOfWorkMock.Object, twitterApiCallServiceMock.Object, tweetTagServiceMock.Object, tagServiceMock.Object, dateTimeParserMock.Object); var fakeTweetsRepo = new Mock <IGenericRepository <Tweet> >(); var tweetCollection = new List <Tweet>(); fakeTweetsRepo.Setup(r => r.All).Returns(tweetCollection.AsQueryable()); unitOfWorkMock.Setup(u => u.Tweets).Returns(fakeTweetsRepo.Object); dateTimeParserMock.Setup(s => s.ParseFromTwitter(It.IsAny <string>())).Returns(dateOfTweet); twitterApiCallServiceMock.Setup(s => s.GetTweetByTweetId(It.IsAny <string>())) .Returns(new TweetFromApiDto { Followee = new FolloweeFromApiDto { FolloweeId = "444" }, TweetId = "666", Text = "Pesho", Entities = new EntitiesDto { UserMentions = new UserMentionDto[0], Hashtags = new HashtagDto[] { new HashtagDto { Hashtag = "bahur" }, new HashtagDto { Hashtag = "gosho" } } } }); tagServiceMock.SetupSequence(s => s.FindOrCreate(It.IsAny <string>())) .Returns(new Tag { Id = 1, Text = "bahur" }).Returns(new Tag { Id = 2, Text = "gosho" }); //Act var tweet = sut.CreateFromApiById("123"); //Assert tweetTagServiceMock.Verify(v => v.AddTweetTagByTweetIdTagId(It.IsAny <int>(), It.IsAny <string>()), Times.Exactly(2)); }
public void Invoke_UserTweetExistsInDeleted_In_Same_Method_When_Provided_Correct_Params_Tweet_Exists_Not_Deleted() { //Arrange var fakeUnit = new Mock <IUnitOfWork>(); var dateTimeProvider = new TestDateTimeProvider(); var fakeTweetService = new Mock <ITweetService>(); var sut = new FakeUserTweetService(fakeUnit.Object, fakeTweetService.Object, dateTimeProvider); var fakeTweetRepo = new Mock <IGenericRepository <Tweet> >(); var tweet = new Tweet { TweetId = "456" }; var tweetCollection = new List <Tweet> { tweet }; fakeTweetRepo.Setup(r => r.AllAndDeleted).Returns(tweetCollection.AsQueryable()); fakeUnit.Setup(u => u.Tweets).Returns(fakeTweetRepo.Object); //Act && Assert Assert.ThrowsException <FakeTestException>(() => sut.SaveSingleTweetToUserByTweetId("123", "456")); }
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_In_UnitOfWork_When_Provided_Valid_Parameters() { //Arrange var unitOfWorkMock = new Mock <IUnitOfWork>(); var mapperMock = new Mock <IMappingProvider>(); var twitterApiCallServiceMock = new Mock <ITwitterApiCallService>(); var tweetTagServiceMock = new Mock <ITweetTagService>(); var tagServiceMock = new Mock <ITagService>(); var dateTimeParserMock = new Mock <IDateTimeParser>(); var dateTimeProvider = new TestDateTimeProvider(); var dateOfTweet = dateTimeProvider.Now; var sut = new TweetService(mapperMock.Object, unitOfWorkMock.Object, twitterApiCallServiceMock.Object, tweetTagServiceMock.Object, tagServiceMock.Object, dateTimeParserMock.Object); var fakeTweetsRepo = new Mock <IGenericRepository <Tweet> >(); var tweetCollection = new List <Tweet>(); fakeTweetsRepo.Setup(r => r.All).Returns(tweetCollection.AsQueryable()); unitOfWorkMock.Setup(u => u.Tweets).Returns(fakeTweetsRepo.Object); dateTimeParserMock.Setup(s => s.ParseFromTwitter(It.IsAny <string>())).Returns(dateOfTweet); twitterApiCallServiceMock.Setup(s => s.GetTweetByTweetId(It.IsAny <string>())) .Returns(new TweetFromApiDto { Followee = new FolloweeFromApiDto { FolloweeId = "444" }, TweetId = "666", Text = "Pesho", Entities = new EntitiesDto { UserMentions = new UserMentionDto[0], Hashtags = new HashtagDto[0] } }); unitOfWorkMock.Setup(s => s.SaveChanges()).Verifiable(); //Act var tweet = sut.CreateFromApiById("123"); //Assert unitOfWorkMock.Verify(v => v.SaveChanges(), Times.Once); }
public static void AssemblyInitialize(TestContext context) { var sc = new ServiceCollection(); sc.AddScoped <IDateTimeProvider>(sp => DateTimeProvider = new TestDateTimeProvider()); sc.AddLogging(o => o.AddConsole()); sc.AddBehaviours(); sc.AddScoped <IOnSaveHandler>(sp => OnSaveHandler = new TestOnSaveHandler()); sc.AddDbContext <TestDbContext>(cfg => { cfg.UseSqlite("Data Source=\"test.db\""); cfg.UseLoggerFactory(LoggerFactory.Create(o => o.AddConsole())); cfg.EnableSensitiveDataLogging(); }); RootServiceProvider = sc.BuildServiceProvider(); using (var ctx = RootServiceProvider.GetService <TestDbContext>()) { ctx.Database.EnsureDeleted(); ctx.Database.EnsureCreated(); } }
public Test() { messageStorage = new MessageStorage(); testDateTimeProvider = new TestDateTimeProvider(new DateTime(2000, 1, 1)); controller = new MessageController(messageStorage, testDateTimeProvider); }
public void Return_Correct_Value_When_Provided_Valid_Id() { //Arrange var fakeUnitOfWork = new Mock <IUnitOfWork>(); var fakeUserTweetRepo = new Mock <IGenericRepository <UserTweet> >(); var fakeTimeProvider = new TestDateTimeProvider(); var testUser1 = new User { UserName = "******", Id = "TestId1" }; var testUser2 = new User { UserName = "******", Id = "TestId2" }; var testFollowee1 = new Followee { ScreenName = "TestScreenName1" }; var testFollowee2 = new Followee { ScreenName = "TestScreenName1" }; var testTweet1 = new Tweet { Text = "testTweet1", OriginalTweetCreatedOn = fakeTimeProvider.CreatedOn, TweetId = "testTweet1Id", Followee = testFollowee1 }; var testTweet2 = new Tweet { Text = "testTweet2", OriginalTweetCreatedOn = fakeTimeProvider.CreatedOn, TweetId = "testTweet2Id", Followee = testFollowee2 }; var testTweet3 = new Tweet { Text = "testTweet3", OriginalTweetCreatedOn = fakeTimeProvider.CreatedOn, TweetId = "testTweet3Id", Followee = testFollowee1 }; var testUserTweet1 = new UserTweet { Tweet = testTweet1, TweetId = testTweet1.TweetId, UserId = testUser1.Id, User = testUser1, IsDeleted = true, DeletedOn = fakeTimeProvider.DeletedOn }; var testUserTweet2 = new UserTweet { Tweet = testTweet2, TweetId = testTweet2.TweetId, UserId = testUser1.Id, User = testUser1, IsDeleted = false }; var testUserTweet3 = new UserTweet { Tweet = testTweet3, TweetId = testTweet3.TweetId, UserId = testUser2.Id, User = testUser2 }; var fakeUserTweetCollection = new List <UserTweet> { testUserTweet1, testUserTweet2, testUserTweet3 }; fakeUserTweetRepo.Setup(r => r.AllAndDeleted).Returns(fakeUserTweetCollection.AsQueryable()); fakeUnitOfWork.Setup(u => u.UserTweets).Returns(fakeUserTweetRepo.Object); var deletedModel = new FakeDeletedTweetsModel { TweetDeletedOn = testUserTweet1.DeletedOn.Value, Text = testUserTweet1.Tweet.Text, OriginalTweetCreatedOn = testUserTweet1.Tweet.OriginalTweetCreatedOn, AuthorScreenName = testUserTweet1.Tweet.Followee.ScreenName }; var expectedResult = new List <FakeDeletedTweetsModel> { deletedModel }; var sut = new TweetStatisticsService(fakeUnitOfWork.Object); //Act var actualResult = sut.GetDeletedTweetsyUserId("TestId1").ToList(); //Assert CollectionAssert.AreEqual(expectedResult, actualResult); }
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 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); }